CS

2의 보수

kark 2024. 7. 14. 18:09
728x90

 

이전글

 

컴퓨터의 사칙연산 (보수법의 필요성)

컴퓨터는 compute 계산을 해주는 기계라고 설명했다.대표적인 계산이라 하면 사칙연산인 덧셈, 뺄셈, 곱셈, 나눗셈이 있다. 허나 컴퓨터는 연산의 효율성과 설계의 단순화를 위해모든 연산을 덧

kark.tistory.com

 

보수법을 통해 뺄셈 연산 시 보수를 얻는 과정을 알게 되었다.

 

그럼 이제 컴퓨터가 사용하는 이진수의 보수법을 알아보자.

① 모든 수를 뒤집는다. (1의 보수법)

② +1 해준다. (2의 보수법)

 

위처럼 간단하다.

 

-3 의 경우

0011 => 1100 => 1101 로 2의 보수를 통해 표현할수 있다.

 

좀 더 궁금했던 부분이

1의 보수 과정에서 끝나는게 아니며 +1의 과정이 필요하지?

왜 2의 보수를 사용해야하는거지?

라는 의문점이 생겼다.

 

정답은 0 값 때문이다.

0을 이진수로 표현하게 되면 0000 으로 표현하게 되는데,

해당 결과를 1의 보수로 표현하면 1111이라는 값을 얻게된다.

 

5 + (-5) = 0

0101 + 1010 = 1111 의 결과로 양의 0과 음의 0이 별도로 표현된다.

 

2의 보수를 통한 연산과정

 

0101 + 1011 = 10000 에서 오버플로우 비트를 버리면 0000 으로 표현되어

2의 보수로 표현하게 되면 + , -의 0 이 하나로 표현된다.

 

또한 4bit 는 16의 경우의 수를 얻게되는데

1의 보수에서는 0000 과 1111로 같은 값을 두개로 나타내는 반면

2의 보수에서는 0000의 하나의 값으로 취하게 되어 1의 보수법보다 하나의 데이터를 더 저장할 수 있게된다.