컴퓨터 산술

8비트 부호 있는 정수에서 −8(1111 1000)을 산술 오른쪽 시프트로 1비트 오른쪽으로 이동한 결과는 무엇입니까?

  1. A124(0111 1100)
  2. B−16(1111 0000)
  3. C−4(1111 1100)
정답과 해설 보기

정답: C. −4(1111 1100)

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

이 분야 연습하기 분야로 돌아가기

컴퓨터 산술의 다른 문제

  1. C 언어에서 int형의 −7 / 2와 −7 >> 1(산술 오른쪽 시프트인 경우)의 결과 조합으로 올바른 것은 무엇입니까?
  2. C 언어에서 32비트 부호 없는 정수(unsigned int)의 0에서 1을 뺀 결과는 무엇입니까?
  3. 부호 없는 정수끼리의 덧셈에서 결과가 표현 가능한 범위를 넘은(오버플로한) 것을 판정하는 방법으로 올바른 것은 무엇입니까?
  4. 부동소수점수에서 인접한 표현 가능한 값끼리의 간격에 대한 설명으로 올바른 것은 무엇입니까?
  5. IEEE 754 단정밀도 부동소수점수에서 0부터 시작하여 모든 정수를 정확히 나타낼 수 있는 상한은 무엇입니까?