elesis's haunt
[컴퓨터 구조] 보수(complement) 본문
보수
컴퓨터는 덧셈만 할줄 아는 기계입니다.
그래서 뺄샘을 덧셈으로 바꿔서 계산할때 보수를 사용합니다.
10 - 3 같은 경우 10 + (-3) 로 계산합니다.
n진법에는 n의 보수와 (n-1)의 보수가 있습니다.
10진법은 10의 보수와 9의 보수가 있고 2진법은 2의 보수와 1의 보수가 있습니다.
10의 보수와 9의 보수
9의 보수: 어떤 숫자 N이 주어지면 9 - (N의 각 자리숫자) 한 것과 동일합니다.
숫자 529의 9의 보수) 999 - 529 = 470
10의 보수: 어떤 숫자 N이 주어지면 N의 제일 큰 자리수를 올림한 수에서 N을 뺀 것입니다.
숫자 529의 10의 보수) 1000 - 529 = 471
n의 보수는 (n-1)의 보수에 +1 한 값 입니다.
따라서 10의 보수는 9의 보수에 1을 더한 것과 같습니다.
예) 다음 뺄셈 600 - 529 = 71을 보수를 사용해 덧셈으로 풀어봅시다.
1. 600 + (-529) = 71
2. -529의 10의 보수는 1000 - 529 = 471이다.
3. 600 + 471 = 1071이다.
4. 천의 자리는 올림수 입니다. 뺄셈에서 올림수는 나오지 않으니 버립니다.
5. 071 = 71
2의 보수와 1의 보수
1의 보수: 주어진 이진수 N의 각자리 수를 1로 만든 값에서 N을 뺀 것입니다.
: 1의 보수는 N값의 1과 0을 뒤집어 놓은 것입니다.
이진수 1011001의 1의 보수)
1111111
-1011001
-----------
0100110
2의 보수: 주어진 이진수 N의 제일 큰 자리수를 올림한 수에서 N을 뺀 것입니다.
: 2의 보수는 1의 보수에 1을 더해준 것과 같습니다.
이진수 1011001의 2의 보수)
1111112 (원래 2가 올 수 없습니다. 10000000이 맞는 값이지만 연산을 위해 이렇게 표기합니다.)
-1011001
----------
100111
1의보수(100110)에 1을 더한 값(100111)과 동일하다.
보수의 이런 계산이 가능한 이유
114 - 89 = 25 의 양변에 100을 더합니다.
114 + ( 100-89 ) = 100 + 25
114 + 11 = 125
10의 보수(11)를 구하는 셈이 됩니다.
양변에 더해준 값 100을 다시 빼주면 25라는 값이 나옵니다.
출처: https://god-gil.tistory.com/40 해당글을 요약했습니다.