1 minute read

1. 비트와 이진수

컴퓨터는 데이터를 1비트 단위로 처리하며 2진수로 표현한다.

// 4에 대한 표현 4비트로 표현시

[0]  [1]  [0]  [0]
2^3  2^2  2^1  2^0

2진수는 0과 1로 표현된다. 그리고 각 비트는 오른쪽부터 왼쪽으로 지수가 커진다.

4비트로 표현할 수 있는 최대값은 전체가 1인 경우이므로 15이다.

// 모두가 1일 경우 최대값

[1]  [1]  [1]  [1]
2^3  2^2  2^1  2^0
 8    4    2    1

2. 음수의 표현

그러면 음수는 어떻게 표현될까? 그냥 음수 부호를 붙이면 될까? 아니다.

컴퓨터에서 음수는 양수와 음수의 비트를 더했을 때 0이 되는 값이며 더했을 때 0이 될 수 있는 비트가 음수다.

컴퓨터는 이를 위해서 먼저 1의 보수를 취하며 이는 모든 비트를 반대로 만드는 것이다.

5를 예로 들면

[0]  [1]  [0]  [1]
2^3  2^2  2^1  2^0
 8    4    2    1

//// 1의 보수
[1]  [0]  [1]  [0]
2^3  2^2  2^1  2^0
 8    4    2    1

그리고 여기에 +1을 하는 2의 보수를 취한다.

//// 1의 보수
[1]  [0]  [1]  [0]
2^3  2^2  2^1  2^0
 8    4    2    1

//// 2의 보수
[1]  [0]  [1]  [1]
2^3  2^2  2^1  2^0
 8    4    2    1

이렇게 되면 이 비트는 음수가 된다. 이제 처음 비트와 2의 보수를 취한 비트를 더하면 0이 됨을 볼 수 있다.

        [0]  [1]  [0]  [1] // 5
        [1]  [0]  [1]  [1]  // 2의 보수처리된 -5
----------------------
[1]     [0]  [0]  [0]  [0]
버려짐

그런데 컴퓨터는 여기에 맨 왼쪽 비트를 부호 비트로 사용하여 확실하게 음수라고 표현한다. 이 비트를 MSB라고 한다.

  [1]     [1] [0] [1] [1]  // -5
  MSB
부호비트

3. 표현 범위

1바이트를 범위는 어떻게 되는지 보면 먼저 1바이트는 8비트이고 8비트는 2^0부터 2^7까지 표현할 수 있다.

그런데 맨 왼쪽 비트는 MSB로 사용하므로 제외해야 하는데 음수의 경우는 MSB가 음수이면서 값을 표현할 수 있어어서 -2^7이 최대수가 된다.

양수의 경우는 MSB를 빼고 최대수를 표현하려면 -1을 하면 된다.

// 2^7-1 -> 127

[0]    [1]   [1]   [1]   [1]  [1]  [1]  [1]
2^7    2^6   2^5   2^4   2^3  2^2  2^1  2^0
msb    64    32    16    8    4    2    1
// 위 비트 총합 127

결국 1바이트의 표현할 수 있는 범위는 -27 ~ 27-1이다.

끝.

Categories:

Updated:

Leave a comment