2진수는 일정한 길이의 n비트로 표현한다. 최상위 비트인 첫 번째 1비트는 부호를 표시하기 위해 사용하고, 나머지 (n-1)개 비트는 2진수 값을 표현하기 위해 사용한다. 실생활에서 사용하는 정수는 음수와 양수를 표현하기 위해 -와 + 같은 부호를 사용하지만, 컴퓨터는 자료를 표현할 때 2진수만 사용하기 때문에 음수와 양수를 표현하는 방법은 부호를 어떻게 표현하느냐에 따라 부호와 절댓값 형식, 1의 보수 형식, 2의 보수 형식으로 나뉜다.
부호와 절댓값 형식은 부호를 최상위 비트에 표시하고 나머지 비트에는 2진수의 절댓값을 표시한다. 부호가 양수(+)면 최상위 비트가 0이 되고, 음수(-)면 최상위 비트가 1이 된다. 1바이트를 사용하여 2진수를 표현하면 첫 번째 1비트에는 부호가 표시되고, 나머지 7비트에는 2진수의 절댓값이 표현된다.
예를 들어, +21과 -21을1바이트의 부호와 절댓값 형식으로 표현하면 [그림 1-11]과 같다.
[그림 1-11] +21과 -21의 부호와 절댓값 표현 예
1의 보수 형식에서 양수(+)는 부호와 절댓값 형식과 같은 방법으로 표현하고, 음수(-)는 2진수를 1의 보수로 변환하여 표현한다. 어떤 값 -x(음수 x)를 n비트의 1의 보수로 표현하는 방법은 (2의 n승 - 1) - | x |이다. 예를 들어 -21을 8비트의 1의 보수 형식으로 표현하면 [그림 1-12]의 왼쪽과 같다. 이 변환 과정을 정리하면, [그림 1-12]의 오른쪽과 같이 전체 n비트를 1로 설정한 값에서 x의 절댓값을 뺀 값이 1의 보수가 된다. 더 간단히 정리하면 n비트인 x를 절댓값으로 표현한 값에서 0은 1로 바꾸고 1은 0으로 바꾸면 1의 보수가 된다.
[그림 1-12] 1의 보수 형식 표현 과정
+21과 -21을 8비트의 1의 보수 형식으로 표현하면 [그림 1-13]과 같다.
[ 그림 1-13 ] +21과 -21의 1의 보수 형식 표현 예
2의 보수 형식에서 양수(+)는 부호와 절댓값 형식과 같은 방법으로 표현하고, 음수(-)는 2진수를 2의 보수로 변환하여 표현한다. 어떤 값 -x(음수 x)를 n비트의 2의 보수로 표현하는 방법은 2의 n승 - | x |이다. 예를 들어 -21을 8비트의 2의 보수 형식으로 표현하면 [그림 1-14]의 왼쪽과 같다. 이 과정도 간단히 정리하면, 그림의 오른쪽과 같이 1의 보수에 1을 더하면 된다.
[ 그림 1-14 ] 2의 보수 형식 표현 과정
21과 -21을 8비트의 2의 보수 형식으로 표현하면 [그림 1-15]와 같다.
Self Test | -39를 3바이트의 ①부호와 절대값 형식, ②1의 보수 형식, ③2의 보수 형식으로 나타내시오.
①10100111 ②01011000 ③01011001
2진수를 표현하는 세 가지 방법(부호와 절댓값 형식, 1의 보수 형식 2의 보수 형식)에서 양수(+)를 표현하는 방법은 [표 1-2]처럼 모두 같다. 음수(-)를 표현하는 형식은 (n-1)비트의 절댓값으로 표현하고 최상위 비트에 음수 부호를 나타내는 1을 표시하느냐, n비트의 1의 보수로 표현하느냐, n비트의 2의 보수로 표현하느냐의 차이가 있다.
[표 1-2] 8비트 2진수를 표현하는 세 가지 방법과 해석
[표 1-3] 2진수를 표현하는 세 가지 방법 비교