티스토리 뷰

기억하자정보/기타

1,2의보수

LANIAN 2006. 9. 25. 00:34

1의보수란 무엇인가?

0000 1010(2) 의 1의보수는
0000 0101(2) 이다. 방법은 간단하다. 1을 0으로 바꿔주고 0을 1으로 바꿔주는것이다.

그렇다면 2의 보수는 어떤것일까?
1의보수를 쓰게된이유는 음수를 나타내기 위해서이다. 그런데 1의 보수를 사용하게되면 문제가 생긴다.
그문제는 -0과 +0이 생긴다는것이다. 0000 0000 는 +0이고 1111 1111 은 -0이기때문에 쓸데없이
0이 두개나 생겨버리게된다. 그래서 고안한것이 2의 보수라는것이다.

먼저 어떻게 2의 보수를 만드는지 보도록하자
0000 1010(2) 의 2의보수
0000 0101(2)+1(2) = 0000 0110(2) 이다.
쉽지 않은가?

그럼 이제 2의보수를 사용해 뺄셈을 해보자.
사실 컴퓨터는 덧셈밖에 하지못한다. 뺄셈은 덧셈을 이용해서 하게된다.
무슨미친소리인가 하겠지만 정말이다.
9-4 = 9+(-4) 둘은 같지 않은가? 컴퓨터는 이렇게 뺄셈을 하게된다.

  9(10) = 0000 1001(2)
  4(10) = 0000 0100(2)
-4(10) = 1111 1011(2) + 1(2) 2의보수를 사용해서-4를 표현한다.
= 1111 1100(2)

  9(10) + (-4(10)) = 0000 1001(2) + 1111 1100(2)
 
  0000 1001(2) =  9(10)
+1111 1100(2) =    + (-4(10))
─────────────────────────────────
10000 0101(2) =        5(10)

8비트로 처리되지않는 가장 앞에 9번째자리에있는숫자 1은 끊어버린다.
9번째 숫자가 나타나는 경우를 OVERFLOW 라고 합니다.

 
  연필을 잡고 차근차근 계산해보길 바란다. 그러면 신기하게도 계산이 된다는걸 알 수 있을것이다.

출처 : http://blog.naver.com/ksunghwank

댓글
안내
궁금한 점을 댓글로 남겨주시면 답변해 드립니다.