BCD코드 Binary coded decimal
앞에서 봤듯이 16진수는 2진수로 변환이 아주 쉽다. 그리고 2진수를 통해서 8진수로도 쉽게 변환시킬 수 있다. 그래서 10진수를 2진수로 쉽게 변환시킬 수 있도록 만들어진 것이 BCD 코드이다.
10진수 | 2 | 5 | 6 |
2진수 | 0001 | 0000 | 0000 |
BCD | 0010 | 0101 | 0110 |
11 | 0001 0001 | 5 | 0101 | 56 | 0101 | 0110 | |||
+12 | 0001 0010 | +6 | 0110 | +75 | 0111 | 0101 | |||
= | 0010 0011 | 1011 | 1100 | 1011 | |||||
자리올림이 없는 경우의 연산 결과 | + | 0110 (6을더함) | + | 0110 | 0110 | 0110 (6을더함) | |||
0001 | 0001 (BCD수로11) | 0001 0010 | 0001 0001 | 10진수로131이다. | |||||
0001 0011 | 0001 | ||||||||
1001 이상의 숫자에 0110을 더해준 이후부터는 10진수 연산과 같은 방법으로 연산한다. 올림수가 생기면 윗자리에 그냥 더해주면 된다. |
3초과코드 excess-3 code
BCD코드의 변형된 형태로 BCD코드에 10진 3, 2진수로는 0011 을 더해준 것으로 3초과코드는 각각의 비트마다 자리값을 가지지 않는 가중치 없는 코드(unweighted code)이다.
그레이 코드 gray code
0000
0001
0010
0011
0100
0101
0011
0101
0110
0111
1000
1001
0011 | ||||||||||||||||
그레이코드 | 0000 | 0001 | 0011 | 0010 | 0110 | 0111 | 0101 | 0100 | 1100 | 1101 | 1111 | 1110 | 1010 | 1011 | 1001 | 1000 |
2진수에서 그레이 코드 변환 방법
→←↑↓
1→0→0→1
↓ ↓ ↓ ↓
1 1 1 0
맨 왼쪽의 숫자를 오른쪽으로 더해주면서 밑으로 내리는 과정이다.
그레이 코드에서 2진수로 변환 방법
1 1 1 0
↓/ ↓/↓/ ↓
1 0 1 1
밑으로 내리고 대각선 우측위로 올려주는 방법으로 더해나간다. 1+1 = 10 이니까 0 다시 0+1은 1
패리티 비트parit bit와 해밍 코드hamming code
데이터 비트와 함께 전송되서 비트단위 오류를 검출하는 비트
패리티 비트는 홀수와 짝수로 전송된 데이터의 오류를 검사한다.
홀수 패리티의 경우 : 데이터를 전송할때 전체 데이터 비트의 합이 짝수이면, 패리티 비트를 1로 설정함으로써 전송되는 모든 비트의 합계가 홀수가 되도록 한다. 만약 데이터 비트의 합이 이미 홀수라면 패리티 비트는 0으로 설정된다.
짝수 패리티의 경우에는 위와 같은 방법으로 모든 비트의 합이 짝수가 되게 하면 된다.
0 10101100
1 10101100
해밍 코드hamming code
R.W.Hamming이 고안한 코드로서 4개의 순수한 정보 비트에 3개의 체크 비트를 추가하여 총 7비트를 만들어서 전송하는 것이다.
hamming code의 표현형식과 오류 검출 방법
1 2 3 4 5 6 7
P1 P2 D1 P3 D2 D3 D4
P1 => 1,3,5,6행에 대해서 짝수 패리티 = C1
P2 => 2,3,6,7행에 대해서 짝수 패리티 = C2
P3 => 4,5,6,7행에 대해서 짝수 패리티 = C3
가 되도록 각각 비트를 끼워넣는다.
C3C2C1순으로 배열하면 C3C2C1 이 오류가 발생한 위치가 된다.
C3C2C1=000 이 나온다면 오류가 없다는 뜻이다.
연습 문제)
1. 2진수 0011에 대한 해밍 코드를 구해보시오.
2. 수신된 데이터가 짝수패리티를 갖는 7비트 데이터인 1000010인 경우 오류의 발생 위치를 찾아내시오.
그 이외의 2진문자 코드
- 0~9숫자와 a~z까지의 영문자 +-등의 특수문자를 코드화한 것을 2진문자 코드 또는 영숫자 코드alphanumeric code라 한다.
- 4비트 BCD코드에 2비트를 추가한 표준BCD코드 standard BCD code
- 미국 표준협회American Standard Association에서 패리티 비트를 포함하여 8비트로 제정한 코드인 ASCII American Standard Code for Information Interchange
- BCD코드에 4비트를 추가한 EBCDIC Extended Binary coded Decimal Interchange Code가 있다.
한글코드
2바이트 완성형 코드
현재 표현가능한 한자 11172자 중 자주 사용하는 한글 2000~3000자 정도를 선정하고, 순서대로 코드값을 부여하여 코드를 구성한다. 또 , 8비트 완성형 코드는 영문과 구별하기 위하여 아스키 코드 128이상의 영역에 한글을 배당한다.
1987년 정부에서 표준으로 정한 KSC5601도 2바이트 완성형 코드로 되어 있다 KS완성형 코드는 각 바이트의 ASCII 161~254까지의 영역을 사용하여 모두 8836자를 표현할 수 있는데, 이 중 사용 빈도에 따라 한글 2350자, 한문 4888자, 특수 문자 1128자를 넣어 사용하고, 나머지 470자는 사용자 정의 영역과 확장 영역으로 비워두고 있다.
2바이트 조합형 코드
첫째 비트가 0이면 2바이트가 영문자를 표현
1이면 한글을 표현 초성 중성 종성으로 각가 5비트씩
유니코드
영어는 1바이트로 표현
동양3국의 언어는 2바이트로 표현
0011 |
0011 |
0011 |
0011 |
0001 | |||||||||||
3초과코드 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 0011 |
0001 |
0001 |
0001 |
0001 |
10진수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
2진수 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
BCD코드 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 0001 |