Advertisement
levartolona

C_PRG_LANG_EX_2.6

Jan 26th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. // in x: n bits start with position p are equals n right bits from y
  7. int setbits(int x, int p, int n, int y)
  8. {
  9.     unsigned int temp = ~(0);
  10.     temp <<= n;
  11.  
  12.     for(int i = 0; i < p - n + 1; i++)
  13.     {
  14.         temp <<= 1;
  15.         temp |= 1;
  16.     }
  17.  
  18.     return (x & temp) | (((~((~0) << n)) & y) << (p - n + 1));
  19. }
  20.  
  21. int main(void)
  22. {
  23.     int p, n, x, y;
  24.     x = 2679;
  25.     y = 1473;
  26.     p = 4;
  27.     n = 3;
  28.  
  29.     printf("setbits p = %i, n = %i\n", p, n);
  30.     printf("%i\n%i\n%i\n", x, y, setbits(x, p, n, y));
  31.  
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement