fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4.  
  5. int mask;
  6.  
  7. int num1 = -16;
  8. int num2 = 16;
  9.  
  10.  
  11.  
  12. int shift_two1 = num1 >> 2;
  13. int shift_three1 = num1 >> 3;
  14.  
  15. int shift_two2 = num2 >> 2;
  16. int shift_three2 = num2 >> 3;
  17.  
  18. printf("2칸 %d\n", shift_two1);
  19. printf("3칸 %d\n", shift_three1);
  20.  
  21. printf("-16 원본\n");
  22. for (int i = 31; i >= 0; i--) { mask = 1 << i; printf("%d", num1 & mask ? 1 : 0); if (i % 8 == 0) printf(" "); } printf("\n");
  23.  
  24. printf("-16 결과\n");
  25. for (int i = 31; i >= 0; i--) { mask = 1 << i; printf("%d", shift_two1 & mask ? 1 : 0); if (i % 8 == 0) printf(" "); } printf("\n");
  26. for (int i = 31; i >= 0; i--) { mask = 1 << i; printf("%d", shift_three1 & mask ? 1 : 0); if (i % 8 == 0) printf(" "); } printf("\n");
  27.  
  28.  
  29. printf("2칸 %d\n", shift_two2);
  30. printf("3칸 %d\n", shift_three2);
  31.  
  32. printf("16 원본\n");
  33. for (int i = 31; i >= 0; i--) { mask = 1 << i; printf("%d", num2 & mask ? 1 : 0); if (i % 8 == 0) printf(" "); } printf("\n");
  34.  
  35. printf("16 결과\n");
  36. for (int i = 31; i >= 0; i--) { mask = 1 << i; printf("%d", shift_two2 & mask ? 1 : 0); if (i % 8 == 0) printf(" "); } printf("\n");
  37. for (int i = 31; i >= 0; i--) { mask = 1 << i; printf("%d", shift_three2 & mask ? 1 : 0); if (i % 8 == 0) printf(" "); } printf("\n");
  38.  
  39.  
  40.  
  41.  
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0s 4488KB
stdin
Standard input is empty
stdout
2칸 -4
3칸 -2
-16 원본
11111111 11111111 11111111 11110000 
-16 결과
11111111 11111111 11111111 11111100 
11111111 11111111 11111111 11111110 
2칸 4
3칸 2
16 원본
00000000 00000000 00000000 00010000 
16 결과
00000000 00000000 00000000 00000100 
00000000 00000000 00000000 00000010