컴퓨터는 더하기 연산밖에 모릅니다.
100-75 란 식이 있을 때 컴퓨터는 빼기를 할 수 없으므로 100+(-75) 처럼 음수 75를 더하여 연산합니다.
이 음수를 표현하기 위해 컴퓨터는 2의 보수란 것을 사용해야 합니다.
2의 보수는 1의 보수의 LSB(최하위비트)에 1을 더하여 알아낼 수 있습니다.
1의 보수는 0->1로 1->0으로 모든 bit를 뒤집어서 간단하게 알아낼 수 있습니다.
8bit 에서 -4 를 표현할 때,
00000100 +4
11111011 -4 : 1의 보수 // +4를 모두 뒤집어서 1의 보수 구함. MSB(최상위비트)가 0이면 양수 1이면 음수.
11111100 -4 : 2의 보수 // 1의 보수의 LSB에 1 더함.
1의 보수의 문제는,,
+0과 -0으로 0이 두개가 나타납니다. 00000000(+0), 11111111(-0)
부호절대값(Sign-Magnitude)이나 1의 보수는 0이 두개(+,-) 존재하기 때문에 2의 보수를 사용합니다.
예제) 3+6, 3+(-6), (-3)+6, (-3)+(-6) 을 2의 보수를 사용하여 계산해 보겠습니다.
-3 구하기 |
-6 구하기 00000110 (+6) 11111001 (-6) 1의 보수 11111010 (-6) 2의 보수 |
3+6= |
3+(-6)= |
(-3)+6= 11111101 (-3) +00000110 (+6) -------------- 100000011 00000011 (+3) |
(-3)+(-6)= |
정해진 bit의 자리수를 벗어난 이진수를 Carry 라고 하며, Carry는 그냥 버립니다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.