[해키피디아] Two's complement(2의 보수)

컴퓨터가 음수를 표현하는 방식에는 크게 세 가지가 존재합니다.

최상위 비트(MSB)를 부호 비트로 사용하여 + 또는 -를 나타내는 방법과 양수(절댓값)의 모든 비트를 반전하여 음수를 표현하는 1의 보수은 +0과 -0이 따로 존재한다는 단점이 있습니다.

예를 들어 1일때 +, 0일때 -라고 부호 비트를 사용한다면 +0은 1000, -1은 0000으로 표현되며 1의 보수에서는 +0은 0000, -0은 1111로 표현됩니다.

해당 문제점에 대한 해답으로 2의 보수가 고안되었으며, 따라서 현재 모든 컴퓨터는 음수의 표현 방법으로 2의 보수를 사용하고 있습니다.

2의 보수는 주어진 수를 커다란 2의 제곱수에서 빼서 얻은 이진수라는 뜻으로, 쉽게 계산하는 방식으로 1의 보수에 1을 더하는 방식이 있습니다.

8비트에서 +16(00010000)에서 -16은 모든 비트를 반전한 1의 보수(11101111)에 1을 더하여 11110000이 됩니다.

16비트에서 +1(0000000000000001)에서 -1을 계산할 때는 +1에서 모든 비트를 반전한 1111111111111110에서 1을 더해 1111111111111111이 됩니다.