(컴퓨터공학입문) 009. 정수 표현

정수 표현

컴퓨터의 기억 공간은 제한적이므로 하나의 정수를 표현하기 위한 크기도 제한되어 있다.

요즘엔 64비트 시스템이 대다수지만, 이론서는 아직 32비트를 기준으로 많이 작성되므로 32비트를 기준으로 포스팅한다.

본 포스팅에서는 정수를 표현하는 대표적인 방법인 2의 보수 표기법에 대해서 알아보자.

쉬운 이해를 위해 32비트 대신 4비트로 공간을 더 제한해보자.

먼저 양수에 대한 2의 보수 표현식은 아래와 같다.

표현
0111 7
0110 6
0101 5
0100 4
0011 3
0010 2
0001 1
0000 0

0부터 7까지 8개의 숫자를 표현하는 데에는 3비트면 충분한데 왜 4비트라고 할까?

이는 정수는 양수와 음수 즉, 부호를 같이 표기해야하기 때문이다.

위의 표에서 가장 왼쪽에 있는 비트가 전부 0으로 이루어진 것을 확인할 수 있는데, 이 0이 바로 양수를 뜻하는 비트이다.

이때 가장 왼쪽에 있는 이 비트를 최상위 비트 혹은 부호 비트라고 표현한다.

그럼 반대로 음수를 표현해보자.

음수를 표현하는 방밥은 아래와 같다.

  1. 표현하려는 음수의 양수를 비트로 표현한다.
  2. 각 비트를 반전한다. (0 -> 1, 1 -> 0)
  3. 1을 더한다.

-5를 표현하는 방법으로 예를 들어보자.

먼저 양수 5를 2진수로 표현하면 아래와 같다.

0101(2)0101_{(2)}

이후 각 비트를 반전한다.

1010(2)1010_{(2)}

반전한 비트에 1을 더하면 2의 보수 음수 표현이 된다.

1011(2)1011_{(2)}

음수에 대한 2의 보수 표현식도 표로 확인해보자.

표현
1111 -1
1110 -2
1101 -3
1100 -4
1011 -5
1010 -6
1001 -7
1000 -8

양수 표현식과 다르게, 음수는 부호비트가 전부 1인 것을 알 수 있다.

참고 양수 표현에는 0이 포함되지만 음수 표현에는 포함되지않음을 상기하자.

4비트로 제한한 공간을 8비트로 확장하면 표현 범위는 아래와 같다.

표현
0111 1111 127
0111 1110 126
0111 1101 125
0000 0001 1
0000 0000 0
1111 1111 -1
1111 1110 -2
1000 0001 -127
1000 0000 -128