Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- // Inverts n bits starting with bit with number p
- int invert(int x, int p, int n)
- {
- unsigned int tmp = ~(0);
- tmp <<= n;
- for(int i = 0; i < p - n + 1; i++)
- {
- tmp <<= 1;
- tmp |= 1;
- }
- unsigned int zero = ~tmp; // 0000111100000
- tmp = ~(tmp) & x;
- x &= ~(zero);
- tmp |= (~zero);
- return (~tmp) | x;
- }
- int main(void)
- {
- int p, n, x, y;
- x = 2679;
- y = 1473;
- p = 4;
- n = 5;
- printf("invert x = %i, p = %i, n = %i is %i\n", x, p, n, invert(x, p, n));
- printf("invert y = %i, p = %i, n = %i is %i\n", y, p, n, invert(y, p, n));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement