Java

[Java] 2의 보수법

gorusair 2021. 12. 6. 22:52

음수의 2진표현 - 2의 보수법

어떤 수의 'n의 보수'는 더했을 때 n이 되는 수를 말한다. 7의 '10의 보수'는 3이고 3의 '10의 보수'는 7이다.

3 과 7의 관계는 '10의 보수의 관계'에 있다고 한다.

'2의 보수 관계' 역시 더해서 2가 되는 두 수의 관계를 말하며 10진수 2는 2진수로 '10'이다 2진수로 '10'은 

자리 올림이 발생하고 0이 되는 수를 뜻한다.

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

'2의 보수법'이라고 한다.

 

음수를 2진수로 표현하기

10진 음의 정수를 2진수로 변환하려면, 먼저 10진 음의 정수의 절대값을 2진수로 변환한다.
그 다음에 이 2진수의 '2의 보수'를 구하면 된다.

 

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

 

2의 보수 구하기

2의 보수 = 1의 보수 + 1

 

'1의 보수'는 0 을 1로 1을 0으로만 바꾸면 된다

예를 들어, 2 진수 '0101'의 '1의 보수'는 '1010'이다. 여기에 1을 더하기만 하면 2의 보수가 된다

 

0101 ->1010 --> 1011

 

음수의 2진 표현을 구하는 방법  
(1) 음수의 절대값을 2진수로 변환한다. -5의 절대값인 5를 2진수로 변환한다. 10진수 5진수 5를 2진수로 변환하면 ' 0101'이다
(2) (1)에서 구한 2진수의 1을 0으로 0은 1로 바꾼다(1의보수) :"0101"이 "1010"이 된다
(3) (2)의 결과에 1을 더한다(2의 보수 구하기,1의 보수`+1) "1010"에 1을 더하면 '1011'이 되고.이것이 -5의 2진 포현이다.