보수란?
보수: 진보의 반대가 아니라 두 수의 합이 n진법의 밑수가 되게 하는 법입니다. 예시를 한번 볼까요
- 10진법에서 3의 10의 보수는 7
- 8진법에서 6의 8의 보수는 2
- 2진법에서 1의 2의 보수는 1
그러나 우리는 0과 1의 세상 속 컴퓨터기에, 2진법의 경우만 알면 됩니다. 컴퓨터가 보수의 개념을 쓰는 이유는 덧셈 밖에 못해서인데요, 우리가 10-3=7이라 생각하는 것을 컴퓨터는 10+(-3)=7로 생각합니다. 따라서 보수의 개념이 필요한 것이지요. (부호는 - ->1, + -> 0으로 표현 가능함)
2진법의 경우, 2의 보수를 구하기 위해서는 1의 보수를 먼저 구해야 합니다. 1의 보수는 숫자를 뒤집어주면 되고(0->1, 1->0), 2의 보수는 그 1의 보수에 1을 더해주면 됩니다. 예시로 알아볼까요.
- 0101 = 십진법 5
- 1010 = 5의 1의 보수
- 1011 = 5의 2의 보수
부호화된 보수
찹 쉽죠? 그러나 부호 절대값, 부호화된 1의 보수, 부호화된 2의 보수를 알아야 뺄셈이 가능해집니다. 부호화되었다는 것은 말 그대로 부호(+,-)를 앞에 붙여준다는 말이며, -는 1, +는 0입니다.
예를 들어
- 십진법 5 = 0101 -> 00101
- 십진법 -5 = 0101 -> 10101
이며, 이 최상위 비트인 부호는 1의 보수와 2의 보수를 계산할 때 바뀌지 않습니다.
구분 | 부호와 절대값 | 부호와 1의 보수 | 부호와 2의 보수 |
+5 | 00101 | 00101 | 00101 |
-5 | 10101 | 11010 | 11011 |
양수(+)의 경우, 부호와 절댓값 = 부호와 1의 보수 = 부호와 2의 보수이며, 음수는 부호는 놔두고 우리가 배웠던 계산식을 활용하면 됩니다. 그렇다면 2의 보수끼리 더해볼까요. (+5) + (-5) = 00101 + 11011 = 100000 이 되지만, 5bit 체계이기에 최상위 비트는 날립니다. 따라서 (+5) + (-5) = 00000으로 깔끔하게 계산이 되네요. 컴퓨터는 0과 1의 세상 속에서 이런 식의 계산을 합니다. 컴퓨터는, 틀릴 수 없습니다.
1의 보수의 뺄셈과 2의 보수의 뺄셈
1의 보수의 뺄셈
- 빼는 수의 1의 보수를 구한 다음 더함.
- 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더함
- 덧셈한 결과가 최상위 비트에서 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 - 부호를 붙임
[예시]
- 7-5 = 111-101 = 111+010 = 1001인데 3bit의 식에서 4bit(최상위 비트)에 1의 자리올림이 일어났으므로 그것을 없애고 최하위 비트에 1을 더해줍니다. 1001-> 001+1 = 010 = 2 따라서 올바르게 계산이 되었네요.
- 5-7 = 101-111 = 101+000 = 101이라서 자리올림이 일어나지 않았습니다. 101의 1의 보수는 다시 010이며, -를 부호를 붙이면 -010 = -2가 됩니다.
2의 보수의 뺄셈
- 빼는 수의 2의 보수를 구한 다음 더함.
- 덧셈한 결과가 최상위 비트에서 자리 올림이 생겼다면 자리올림을 제외한 나머지 부분이 결과.
- 덧셈한 결과가 자리 올림이 생기지 않았다면 연산 결과의 2의 보수를 구한 후 -부호를 붙임
[예시]
- 7-5 = 111-101 = 111+011 = 1010 -> 010 = 2므로 정답.
- 5-7 = 101-111 = 101+001 = 110 -> 010(110의 2의 보수) -> -010 = -2이므로 정답.
예제(진짜 마지막)
Q. (기출문제) 178-37의 계산과정을 2의 보수로 계산하라!
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
178의 2진수 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
37의 2진수 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
37의 1의보수 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
37의 2의보수 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
178 이진수 + 37의 2의보수 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | |
결과(최상위 비트 버림) | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
어때요, 참 쉽죠?
'자격증 > 전자계산기조직응용기사' 카테고리의 다른 글
[전자계산기조직응용기사] 필수! 로더(Loader)의 의미 (0) | 2021.04.18 |
---|---|
[전자계산기조직응용기사] 필수! 플립플롭의 종류와 회로도 (0) | 2021.04.17 |
[Summary] ECK (0) | 2021.04.15 |
[전자계산기조직응용기사] 필수! 마이크로 연산 (0) | 2021.04.07 |
[전자계산기조직응용기사] 필수! 반감산기와 전감산기 (2) | 2021.04.03 |