개발_기타/미분류

2진수의 음수표현법

zuyo 2017. 7. 22. 18:30
반응형

부호비트

 

최상위비트(MSB : Most Significant Bit)는 부호비트라고 하는데

 

부호비트가 0이면 양수, 1이면 음수를 나타낸다.


2진수의 계산

 

10진수 1은 2진수로 00000001 이다. 

그러면 음수인 -1은 2진수로 얼마일까?

 

흔히 10000001이라고 생각하기 쉽지만, 

실제로 10진수 -1 의 2진수는 11111111이다.

 

컴퓨터는 빼기 연산을 할 수 없기 때문에 

대신 빼기 연산을 덧셈처럼 수행한다.

1-1=0이 1+(-1)와 같은 것과 같다.

 

2의 보수를 이용하면 위와 같이

덧셈으로 뺄셈 계산이 가능하다.

 

2의 보수를 이용해서 1-1을 계산해보자.

먼저 1을 -1로 바꾼다. 
00000001 -> 11111110 // 0은 1로, 1은 0으로 바꾼 다음 
11111110 -> 11111111 // +1 을 한다.
따라서 -1은 11111111 이 된다.

그다음 1-1 을 계산한다.

2진수로 00000001(8자리) + 11111111(8자리) = 100000000 (9자리)가 되어 버린다.

9번째 자리가 넘쳐 1이 되었지만

2진수로 계산할 때, 범위를 넘어서는 자리는 버리므로 

값에 포함되지 않는다.

따라서 결과값은 00000000 (2진수) = 0 (10진수) 가 된다.

 

연산 결과가 음수인 경우에는 어떻게 될까?

2-4를 계산해보자

2는 2진수로 00000010 이고, 4는 00000100 이다.

먼저 -4를 구한다.
4는 -4 이므로 2의 보수를 취하게 되면
-4는 11111100 이 된다.

2-4를 계산한다.
00000010 + 11111100 = 11111110 = -2

결과값의 최상위 비트가 1이므로 음수인 걸 알 수 있다.

11111110 이 -2가 맞는지 확인해 보려면

다시 2의 보수를 취해서 2가 되면 된다.

11111110 의 2의 보수는 00000010 으로

10진수 2가 맞다.


음수를 취급하는 자료형 

 

unsigned 키워드가 붙은 자료형은

음수를 취급하지 않는 대신에

더 많은 양수값을 표현할 수 있다.

 

예를 들어 short 자료형은

2 바이트 크기를 사용하므로

2의 16제곱, 즉 65,536 개의 값을 표현할 수 있는데

 

short형은 -32,768 ~ 32,767 까지,

unsigned short형은 0 ~ 65,535 까지 표현 가능하다.

 

이는 부호 비트가 필요 없으므로 

최상위 비트를 더 많은 값을 표현하는데 사용할 수 있기 때문이다.

 

참고로 음수 사용이 가능한 자료형에서 

양수의 범위는 0 ~ 32,767 이고,

음수의 범위는 -1 ~ -32,768 까지 인데

 

음수가 하나 더 큰 이유는 

0이 양수 자리를 하나 차지하기 때문이다.

 

실제 0은 양수도 음수도 아니지만 

부호비트 때문에 0은 양수에 포함된다.

반응형