쌓고 쌓다

BCD 코드와 3초과 코드 본문

Git & CS

BCD 코드와 3초과 코드

승민아 2022. 9. 21. 20:17

BCD(Binary Coded Decimal code) 코드

2진화 10진 코드 또는 8421코드로 부르며

10진수 0~9를 2진화 한 코드로 표기는 2진수로하지만 10진수처럼 사용.

1010(=10)부터 1111(=15)까지 6개는 사용하지 않는다.

 

아래의 표처럼 BCD코드를 사용한다.

10진수-> BCD 코드 10진수-> BCD 코드 10진수-> BCD 코드
0 0000 10 0001 0000 20 0010 0000
1 0001 11 0001 0001 31 0011 0001
2 0010 12 0001 0010 42 0100 0010
8 1000 18 0001 1000 53 0101 0011
9 1001 19 0001 1001 237 0010 0011 0111

그냥 각 자리에 해당하는 10진수를 2진수로 바꾸어 표시하면 된다.

10진수 10을 예로 십의 자리수 1의 2진수는 0001, 일의 자릿수 0의 2진수는 0000으로 합쳐서

0001 0000으로 표시하는것이다.

 

BCD 코드의 연산

10진수 연산처럼 수행한다.

만약 BCD 코드를 벗어나는 (9를 초과) 경우 표현을 어떻게 할까?

그냥 초과한 자리에 0110(=6)을 더해준다.

 

몇 가지 예를 보자.

 

두 번째 예로 96+58을 계산해보자.

10의 자리와 1의 자리가 9를 초과했으므로 각 자리에 0110(=6)을 더해주었다.

 

3초과 코드

BCD코드에 0011(=3)을 더하여 나타낸다.

이 코드에 0000(=0), 0001(=1), 0010(=2), 1101(=13), 1110(=14), 1111(=15)는 존재하지 않음

왜냐하면

BCD는 0~9까지만 나타내기에 3을 더하면 0~2는 표현 못하고 10 이상은 나타내지 못하기에 

13~15는 표현 못함

이 코드는 자기 보수의 성질을 가지며

3초과 코드 현재 값에서 1의 보수를 취하면 10진수에서 9의 보수에 해당하는 값이 된다.

10진수 38을 3초과 코드로 바꾸어보자.

*보수 :각 자리 숫자의 합이 일정 수가 되게 하는 수

Comments