비트와 이진수 그리고 범위
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이다.
끝.
Leave a comment