BCD코드(Binary Coded Decimal code : 2진화 10진코드)
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 |
3 |
0011 |
13 |
0001 0011 |
53 |
0101 0011 |
4 |
0100 |
14 |
0001 0100 |
64 |
0110 0100 |
5 |
0101 |
15 |
0001 0101 |
75 |
0111 0101 |
6 |
0110 |
16 |
0001 0110 |
86 |
1000 0110 |
7 |
0111 |
17 |
0001 0111 |
97 |
1001 0111 |
8 |
1000 |
18 |
0001 1000 |
196 |
0001 1001 0110 |
9 |
1001 |
19 |
0001 1001 |
237 |
0010 0011 0111 |
BCD 코드는 10진수를 0~9까지 2진화한 코드로 , 실제표기는 2진수지만 10진수처럼 사용한다.
즉 1010~1111까지 (1010,1011,1100,1101,1110,1111) 6개는 사용하지 않는다.
일반적으로, BCD코드는 10진 코드와 같은 방식으로 계산을 한다.
예를들면,
10진 덧셈 BCD 덧셈 10진 덧셈 BCD 덧셈
6 0110 42 0100 0010
+ 3 + 0011 + 27 +0010 0111
9 1001 69 0110 1001
과 같지만,
계산결과가 BCD코드를 벗어나는, 즉 9를 초과하게 되는 경우에는 계산 결과에 6(BCD : 0110)을 더해준다.
10진 덧셈 BCD 덧셈
8 1000
+ 7 + 0111
15 1111
+ 0110
0001 0101
3초과 코드
3초과 코드(excess -3code) 는 BCD 코드로 표현한 값에 3(=0011)을 더하여 나타낸 코드이다.
ex)
10진수 |
BCD코드 |
3초과코드 |
0 |
0000 |
0011 |
1 |
0001 |
0100 |
2 |
0010 |
0101 |
그레이코드 (Gray code)
그레이 코드에는 가중치가 없기 때문에
연산에는 부적절하다.
대신에, 아날로드-디지털 변환기(ADC)나 입출력장치 코드로 주로 사용된다.
연속되는 코드들간에
한 비트만 변하여 새로운 코드가 되며,
입력코드로 사용하면 오차가 작아지는 특징이 있다.
에러검출코드 - 패리티비트, 해밍코드
1. 패리티비트
에러 검출코드로 가장 간단하게 사용되는 것이 패리티비트(parity bit)를 사용한 코드이다.
일반적으로 컴퓨터 내부, 특히 주기억장치에서 사용한다.
메모리에 저장하거나 전달할 데이터에 패리티를 붙여서 전송한다.
패리티에는 크게
짝수패리티( even parity : 1의 계수가 짝수로 )와
홀수패리티( odd parity : 1의 계수가 홀수로 )가 있다.
단지 패리티는 에러가 있는지 검출할 뿐이며, 여러 비트에 에러가 발생하면 검출이 안되는 경우도 있다.
패리티비트 하나를 사용할 경우, 에러검출만 할 수 있고, 정정은 불가능하다.
이를 해결하기 위하여
패리티를 블록 데이터에 적용하는데, 가로와 세로 데이터들에 패리티를 적용하면 에러를 검출하여 위치를 정정할 수 있는데 이것을 병렬 패리티 (parallel parity) 라고 한다.
- 짝수 패리티 Y=1 에러발생 , Y=0 에러발생 X
- 홀수 패리티 Y=1 에러발생X, Y=0 에러발생
2. 해밍코드
- 에러 정정 가능함
- 짝수 패리티 이용
- 추가되는 패리티 비트의 수 (p= 패리티비트, d= 데이터비트 : 2^p ≥ d+p+1 )
★ 해밍코드에서 패리티비트의 위치와 패리티 생성영역
위치 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
기호 |
P1 |
P2 |
D3 |
P4 |
D5 |
D6 |
D7 |
P8 |
D9 |
D10 |
D11 |
D12 |
P1 |
|
|
|
|
|
|
|
|
|
|
|
|
P3 |
|
|
|
|
|
|
|
|
|
|
|
|
P4 |
|
|
|
|
|
|
|
|
|
|
|
|
P8 |
|
|
|
|
|
|
|
|
|
|
|
|
P1 = P1 + D3 +D5 + D7 + D9 + D11
P2 = P2 + D3 + D6 + D7 + D10 + D11
P3 = P4 + D5 + D6 + D7 + D12
P4 = P8 + D9 + D10 + D11 + D12