쌓고 쌓다
BCD 코드와 3초과 코드 본문
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초과 코드로 바꾸어보자.
*보수 :각 자리 숫자의 합이 일정 수가 되게 하는 수
'Git & CS' 카테고리의 다른 글
패리티 비트와 병렬 패리티 (0) | 2022.09.21 |
---|---|
그레이 코드(Gray Code) (0) | 2022.09.21 |
메모리 구조(Code, Data, Heap, Stack) (2) | 2022.09.19 |
진법 변환 방법 + 소수점 포함 (2진수<->8진수<->10진수<->16진수) (0) | 2022.09.18 |
저급언어 & 고급언어 (0) | 2022.09.07 |
Comments