컴퓨터 산술
8비트 부호 있는 정수에서 −8(1111 1000)을 산술 오른쪽 시프트로 1비트 오른쪽으로 이동한 결과는 무엇입니까?
- A124(0111 1100)
- B−16(1111 0000)
- C−4(1111 1100)
정답과 해설 보기
정답: C. −4(1111 1100)
산술 시프트(산술 오른쪽 시프트)에서는 비어 있는 최상위 비트에 부호 비트를 복사하므로 1111 1000은 1111 1100이 되고, 이는 2의 보수로 −4입니다. 음수에서도 오른쪽으로 1비트 이동하면 2로 나눈 값이 됩니다. 최상위에 0을 넣는 논리 오른쪽 시프트에서는 0111 1100 = 124가 되어 부호가 바뀌어 버립니다. −16은 왼쪽으로 1비트 이동한 결과입니다. C 언어에서 부호 있는 정수를 오른쪽 시프트했을 때 어느 쪽이 되는지는 처리계에 맡겨져 있었다는 점에도 주의해야 합니다.