목차

이진 부호화 십진수

Binary-coded decimal (BCD). 십진수비트열로 표현하기 위한 부호화 방법. 여러 자리의 십진수를 이진수로 변환한 뒤 그걸 그대로 저장하는 보통의 방법과는 달리, BCD에서는 각 자리마다 4비트씩 고정하여 저장하기 때문에 출력이 훨씬 간단한 대신 같은 자릿수를 표현하는데 더 많은 비트가 필요하다.

가장 널리 쓰이는 BCD 8421 부호화에서는 0부터 9까지의 자리를 각각 0000부터 1001까지 해당하는 이진수로 저장하고, 남는 여섯 개의 비트열을 부호 용으로 사용(양수 1100, 음수 1101, 부호 없음 1111)한다. 이렇게 나온 4비트열을 실제로 저장하는 방법은 대략 몇 가지로 나뉘는데:

그 밖의 변종으로 BCD를 고정소숫점 실수를 표현하는 데 쓰는 경우도 있다. 이 경우 어디에 소숫점이 붙는지에 대한 정보는 바이트열만으로는 알 수 없다.

다른 부호화

BCD에서 각 4비트에 어떤 가중치를 할당하느냐에 따라 여러 다른 부호화가 가능하다. 다음은 대표적인 예제들이다.

자리 8421 Excess-3 2421 8421 8421*1)
0 0000 0011 0000 0000 1010
1 0001 0100 0001 0111 0001
2 0010 0101 0010 0110 0010
3 0011 0110 0011 0101 0011
4 0100 0111 0100 0100 0100
5 0101 1000 1011 1011 0101
6 0110 1001 1100 1010 0110
7 0111 1010 1101 1001 0111
8 1000 1011 1110 1000 1000
9 1001 1100 1111 1111 1001

이 중 Excess-3, 2421, 8421은 비트를 반전시키면 9의 보수를 쉽게 구할 수 있다는 장점이 있다. 또한 Excess-3의 경우 여기에 더해 각 자리의 정렬이 그대로 보존되고, 기존의 덧셈 회로를 그대로 쓸 수 있다는2) 장점이 있어서 한동안 널리 쓰였다.

같이 보기

1) 자리 0에 10에 해당하는 값을 대응시켰다.
2) 덧셈 후 그 결과가 12를 넘으면 3을 더하고, 아니면 3을 뺀다.