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 다.
