티스토리 뷰

Etc

2의보수법 개념정리

Loweeeell 2018. 9. 27. 00:24

10진수에도 양수 1이 있고 음수 1이 있듯이 2진수에도 음수가 존재한다.


먼저, 어떤 수의 'n의 보수'는  어떤 수에 더했을 때 n이 되는 수이다.

7의 10의 보수는 3이다. 7+3 = 10

3의 10의 보수는 7이다. 3+7 = 10


이때, 3과 7은 10의 보수의 관계에 있다고 정의한다.


2의 보수 관계도 더해서 2가 되는 두 수의 관계를 말하고, 10진수 2는 2진수로 '10'이다.

2진수로 '10'은 자리올림이 발생하고 0이 되는 수를 뜻한다.

때문에 2의 보수 관계에 있는 두 2진수를 더하면 (자리올림이 발생하며) 0이된다.

* 참고로 4비트 기준으로 설명한다. *


   0101 (10진수 5)

+ 1011 (10진수 -5)


  10000 -> 크기가 4비트 이기 때문에 자리올림은 버려짐.


2의 보수 관계에 있는 두 2진수로 5와 -5처럼 절대값이 같고 부호가 다른 두 10진수를 표현하는 것을 2의 보수법이라한다.

0101의 2의 보수는 0101이다.


그렇다면 음수인 2진수는 어떻게 구할까??

10진 음의 정수를 2진수를 변환하기 위해서는 10진 음의 정수의 절댓값을 2진수로 변환한 다음, 그 2진수의 2의 보수를 구하면 된다.

-5(10진수) -> 5(10) -> 0101(2) -> 1011(2)


2의 보수를 구하는 공식은 정말 간단하다.

1의 보수 + 1


1의 보수는 그냥 현재 2진수에 1은 0으로, 0은 1로 변환하면 된다.

0101 -> 1010(1의 보수)


이 상태에서 1을 더해주면 2의 보수가 된다.

1010(1의보수) + 1 = 1011(2의보수)


이렇게 10진수 -5를 2진수 1011로 표현할 수 있다!


Refer

자바의 정석






'Etc' 카테고리의 다른 글

.gitignore 생성/적용  (0) 2018.02.28
url,uri의 차이  (0) 2018.02.04
댓글