2의 보수

IT 위키
Two's Complement
이진수의 모든 비트를 반전한 뒤 1을 더해 얻는 보수. n비트 수 N 에 대해 2ⁿ − N 과 같다.

현대 컴퓨터가 정수 음수를 표현하는 표준 방식이다. 0의 표현이 하나뿐이고 덧셈·뺄셈 회로를 공유할 수 있어서 1의 보수나 부호-절댓값 방식을 밀어냈다.

구하는 법

[편집 | 원본 편집]
  원래 값 : 0 0 1 0 1 1 0 0   (44)
1의 보수 : 1 1 0 1 0 0 1 1
     + 1 : 1 1 0 1 0 1 0 0   ← 2의 보수 (−44)

빠른 방법도 있다. 오른쪽에서부터 처음 나오는 1까지는 그대로 두고, 그보다 왼쪽의 비트를 모두 반전하면 같은 결과가 나온다.

  • 최상위 비트가 1이면 음수다.
  • 0의 표현이 하나(00000000)뿐이다.
  • n비트 표현 범위는 −2ⁿ⁻¹ ~ +(2ⁿ⁻¹ − 1)음수 쪽이 하나 더 넓다. 8비트면 −128 ~ +127.
  • 뺄셈은 A + (B의 2의 보수) 로 계산하고, 최상위에서 발생한 올림은 그냥 버린다. 1의 보수와 달리 순환 자리올림이 없다.
  • 음수의 2의 보수를 다시 구하면 원래 양수로 돌아온다.

값 읽는 법

[편집 | 원본 편집]

최상위 비트에 음의 가중치를 주면 된다. 8비트라면

값 = −b₇·2⁷ + b₆·2⁶ + … + b₀·2⁰

예를 들어 11010100 은 −128 + 64 + 16 + 4 = −44 다.

같이 보기

[편집 | 원본 편집]