Altifigence Academy

14 / 36 · 개념

부호 있는 값과 오버플로

같은 비트열을 unsigned와 2의 보수로 해석합니다.

학습 목표

  • 2의 보수로 음수를 표현합니다.
  • 자리올림과 signed 오버플로를 구별합니다.

비트열에는 해석 규칙이 필요합니다.

4비트 1111을 unsigned로 읽으면 15, 2의 보수 signed로 읽으면 −1입니다. N비트 signed 범위는 −2^(N−1)부터 2^(N−1)−1까지입니다.

음수를 만들려면 같은 폭에서 비트를 반전하고 1을 더합니다. +3인 0011을 반전하면 1100, 1을 더하면 −3인 1101입니다. 폭을 바꾸면 부호 확장 규칙도 적용해야 합니다.

캐리와 오버플로는 같은 것이 아닙니다.

4비트 signed에서 7+1은 0111+0001=1000이 되어 −8로 보입니다. 두 양수를 더했는데 음수가 되었으므로 signed 오버플로입니다. 최상위 캐리가 없더라도 발생합니다.

−1+1은 1111+0001이며 하위 4비트는 0000입니다. 최상위 캐리는 있지만 signed 결과 0은 올바릅니다. 비교와 덧셈 전에 포트·변수의 signed 여부를 맞추세요.

직접 생각해 보기

4비트 1000을 unsigned와 signed로 각각 읽으세요.

해설 보기

unsigned는 8, 2의 보수 signed는 −8입니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.