문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> int main() { int val = 0x2D; int shift = 3; int result1 = (val << shift) & 0x7F; int result2 = (val >> 2) | 0xC0; int result3 = (~val) ^ 0x55; printf("%d %d %d", result1, result2, result3); return 0; }
정답
104 203 133
104 203 133
해설
val = 0x2D = 45(10진수) = 00101101(2진수). result1: (45 << 3) = 360 = 101101000(2진수), 360 & 0x7F = 360 & 127 = 104. result2: (45 >> 2) = 11 = 00001011(2진수), 11 | 0xC0 = 11 | 192 = 203. result3: ~45 = 11010010(2진수) = 210, 210 ^ 0x55 = 210 ^ 85 = 133.