Advertisement
bitwise_gamgee

Untitled

May 31st, 2023
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void print_binary(unsigned int number) {
  4.     for(int i = 7; i >= 0; --i) {
  5.         putchar('0' + ((number >> i) & 1));
  6.         if(i % 4 == 0 && i != 0)
  7.             putchar(' ');
  8.     }
  9.     putchar('\n');
  10. }
  11.  
  12. int main() {
  13.     unsigned int num = 64; // 0100 0000
  14.     int pos = 3;
  15.     int n = 2;
  16.     unsigned int expected_result = 92; // 0101 1100
  17.  
  18.     printf("Initial number: ");
  19.     print_binary(num);
  20.  
  21.     printf("\nExpected result: ");
  22.     print_binary(expected_result);
  23.  
  24.     printf("\n---- Mask 1 ----\n");
  25.     unsigned int mask1 = (1 << n) - 1;
  26.     printf("(1 << n) - 1: ");
  27.     print_binary(mask1);
  28.     mask1 <<= pos;
  29.     printf("<< pos: ");
  30.     print_binary(mask1);
  31.    
  32.     unsigned int result1 = num | mask1;
  33.     printf("Result 1: ");
  34.     print_binary(result1);
  35.  
  36.     printf("\n---- Mask 2 ----\n");
  37.     unsigned int mask2 = (1 << n) - 1;
  38.     printf("(1 << n) - 1: ");
  39.     print_binary(mask2);
  40.     mask2 <<= (pos - n + 1);
  41.     printf("<< (pos - n + 1): ");
  42.     print_binary(mask2);
  43.  
  44.     unsigned int result2 = num | mask2;
  45.     printf("Result 2: ");
  46.     print_binary(result2);
  47.  
  48.     return 0;
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement