메뉴 건너뛰기


Computer Science > 기술자료

기타 음수 표현

2014.01.05 01:51

푸우 조회 수:7713

출처: http://air802.tistory.com/52


컴퓨터는 2 진수를 사용한다. 1 byte의 2 진수를 가지고 생각해보자. 1 byte는 2 진수 8자리이며, 최대 0에서 255 까지 수를 표현할 수 있다. 각각의 자리를 1 bit, 즉 8 bit = 1 byte이다.

a.png

음수를 표현하기 위해 초기에 최상위 비트를 부호비트로 사용하였다. 
부호화 절대치(Signed magnitude) 방식이라 한다.

b.png

부호비트에 0 인 경우는 양의 정수를 1 인 경우는 음의 정수를 표현한다. 
7bit를 이용해 숫자를 표현하므로 0 에서 127 까지 표현인 된다. 하지만 이 방식에는 문제점이 몇 가지 발생한다.

문제점 1> 0 이 + 0 과 – 0 이 발생하여 0 이 애매모호해진다.

c.png  

부호는 다르지만 숫자 표현은 0 이다.


문제점 2> 산술 계산에 오류가 발생한다.

d.png  

2 – 2 = 0 의 연산이 –4 라는 엉터리의 결과를 범한다.


이러한 문제를 해결하기 위해 2의 보수법을 이용한다. 
2의 보수법을 이용과 동시에 부호화 절대치(Signed magnitude) 방식의 부호 표현 방식을 그대로 고수하며 보완하는 방법이다. 0에서 127까지를 양의 정수의 범위로 두고 128에서 255까지는 음의 정수의 범위로 둔다. 이는 최상위 비트가 항상 1일 경우(128 ~ 255)만 음수가 되는 것이기 때문에 부호화 절대치 방식의 부호 표현 방식을 유지할 수 있다. 또한 산술연산의 문제가 발생하지 않는다. 음수는 –1이 255가 되며 254 = –2, 253 = –3, … , 128 = –128 표현이된다.

e.png