컴퓨터는 더하기 연산밖에 모릅니다.
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 구하기

 00000011 (+3)
 11111100 (-3) 1의 보수
 11111101 (-3) 2의 보수

 -6 구하기

 00000110 (+6)
 11111001 (-6) 1의 보수
 11111010 (-6) 2의 보수

 

 

 3+6=

  00000011 (+3)
 +00000110 (+6)
 --------------
  00001001 (+9)
.

 3+(-6)=

  00000011 (+3)
 +11111010 (-6)
 --------------
  11111101 (-3)
.

 (-3)+6=

  11111101 (-3)
 +00000110 (+6)
 --------------
 100000011
  00000011 (+3)

 (-3)+(-6)=

  11111101 (-3)
 +11111010 (-6)
 --------------
 111110111
  11110111 (-9)

 

정해진 bit의 자리수를 벗어난 이진수를 Carry 라고 하며, Carry는 그냥 버립니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret