컴퓨터

[컴퓨터] 2진수의 음수 표현: 1의 보수와 2의 보수 완벽 이해

wony-wony 2024. 10. 21. 00:07

 

 

 

오늘은 '2진수의 음수 표현'에 대해 알아보도록 하자.

 

 

2진수의 음수를 표현하는 가장 일반적인 방법은 2의 보수 표기 방법이다.

2의 보수를 알아보기에 앞서 1의 보수에 대해 먼저 알아보자.

 

 

 

 

 

1의 보수(1's complement)

1의 보수는 주어진 2진수의 비트를 0은 1로, 1은 0으로 각각 변환하는 방법이다.

예를 들어 2진수 0100의 1의 보수는 1011이 된다.

 

음수를 1의 보수로 표기할 경우, 0이 +0과 -0으로 각각 다르다는 단점이 있다.

  • +0은 0000이고, -0은 1111이다.

Figure 1. 2진수를 1의 보수로 변환하는 과정

 

 

1의 보수는 0이 두 가지로 표현되므로 -8은 표현 불가능하다.

 

이에 대해 자세히 얘기해보자면, 먼저 -8을 1의 보수로 나타내려고 해보자.

그렇게 해보려고 한다면, 8은 4비트로는 표현할 수 없다는 사실을 깨달을 것이다.

4비트로 표현할 수 있는 최댓값은 '0111', 즉 7이다. 

-8을 표현하려면 2진수(양수) 1000으로 표현하여 1의 보수 0111로 만들 수 있을 것 같지만, 이렇게 1의 보수로 변환하게 되면, 7에 해당하는 값으로 취급되어버린다. 따라서, -8은 1의 보수로 나타낼 수 없다.

 

이러한 문제를 해결하기 위해 1의 보수 대신 2의 보수 방식을 사용한다.

 

 

 

 

 

 

2의 보수(2's complement)

이제 본격적으로 2의 보수에 대해 알아보도록 하자.

음수의 2진수 표기인 2의 보수를 구하는 방법에는 3가지가 있다.

 

 

방법 1 

$2^n$에서 음수의 절대값을 빼는 방법이다. 여기서 n은 숫자가 표현되는 비트의 개수이다.

예를 들어 -4를 4비트로 2의 보수로 표현하자면, $2^4-4=12=1100_2$가 된다.

Figure 2. 2의 보수 방법 1

 

 

방법 2

2의 보수는 1의 보수 값보다 1이 크다는 사실을 이용하는 것이다.

단계 1 : 음수의 절대값인 양의 정수의 이진수를 n 비트에서 구한다.
단계 2 : 단계 1에서 얻은 이진수의 1을 보수를 n 비트에서 구한다.
단계 3 : 단계 2에서 얻은 이진수에 1을 더한 n 비트만을 취한다.

Figure 3. 4비트에서 -4의 2의 보수 계산 과정

 

 

 

방법 3

이 방법은 3가지 방법 가운데 가장 간편한 방법이다.

원래 양수의 n비트의 2진수에서 가장 오른쪽의 0에서 처음으로 나오는 1까지 그대로 두고 나머지 왼쪽 비트를 모두 1의 보수로 바꾸는 방법이다.

Figure 4. 2의 보수 계산 방법 3(간편한 방법)

 

 

 

 

 

4비트의 2진수 표현

정리해보자면,

 

1의 보수는 0이 두 가지로 표현되므로 -8을 표현할 수 없다.

2의 보수는 이러한 1의 보수의 단점을 보완하여 4비트에서 -8에서 +7까지 표현이 가능하다.

Figure 5. 4비트 2진수의 1의 보수와 2의 보수

 

 

 

 

음수의 비트 표현의 특징

마지막으로, 음수의 비트 표현의 특징을 알아보도록 하자.

 

  • 1의 보수와 2의 보수 모두 음수는 4비트의 가장 왼쪽 비트(최상위 비트; MSB : Most Significant Bit)가 1이다.
  • 보수 표현에서는 이 최상위 비트가 부호를 나타내므로 부호 비트(sign bit)라고도 부른다.
  • 1의 보수가 2의 보수보다 표현할 수 있는 정보의 수가 하나 적다.

Figure 6. MSB와 1의 보수와 2의 보수의 표현 범위