Advertisement
levartolona

C_PRG_LANG_EX_2.7

Jan 26th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.66 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. // Inverts n bits starting with bit with number p
  4. int invert(int x, int p, int n)
  5. {
  6.     unsigned int tmp = ~(0);
  7.  
  8.     tmp <<= n;
  9.     for(int i = 0; i < p - n + 1; i++)
  10.     {
  11.         tmp <<= 1;
  12.         tmp |= 1;
  13.     }
  14.  
  15.     unsigned int zero = ~tmp; // 0000111100000
  16.     tmp = ~(tmp) & x;
  17.     x &= ~(zero);
  18.     tmp |= (~zero);
  19.     return (~tmp) | x;
  20. }
  21.  
  22. int main(void)
  23. {
  24.     int p, n, x, y;
  25.     x = 2679;
  26.     y = 1473;
  27.     p = 4;
  28.     n = 5;
  29.  
  30.     printf("invert x = %i, p = %i, n = %i is %i\n", x, p, n, invert(x, p, n));
  31.     printf("invert y = %i, p = %i, n = %i is %i\n", y, p, n, invert(y, p, n));
  32.  
  33.  
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement