23.7 연습문제: 시프트 연산자 사용하기

다음 소스 코드를 완성하여 4가 출력되게 만드세요.

practice_bitwise_shift_operator.c

#include <stdio.h>
 
int main()
{
    unsigned char num1 = 32;
 
    num1 = num1 >> 4 << ____;
 
    printf("%u\n", num1);
 
    return 0;
}

실행 결과

4

정답

1

해설

32 >> 4 << x와 같이 32를 오른쪽으로 4번 시프트 그리고 왼쪽으로 x번 시프트 했을 때 4가 나와야 합니다.

0010 0000(32)>> 4를 하면 0000 0010(2)가 됩니다.

0010 0000(32)
_________ >> 4
0000 0010(2)

여기서

0000 0010(2)를 왼쪽으로 한 번만 시프트하면 0000 0100이 되므로 정답은 1입니다.

0000 0010(2)
_________ << 1
0000 0100(4)