[디지털 논리] 1/2/3장(수의 체계, 디지털 코드)
Book Title : 처음 만나는 디지털 논리회로
Author : 임석구, 홍경오
Publisher : 한빛아카데미
1장 2장은 나중에 추가
3. 디지털 코드
3.1 숫자 코드
BCD 코드
- 10진수를 2진화한 코드(8421코드)
- 표기는 2진수지만 의미는 10진수
- 0(0000) ~ 9(1001)까지 범위만 사용
- 1024를 표현하고 싶다면 4비트 4개로 각 자리를 표현
- ex) 196 = 0010 0011 0111
- 계산 결과 9(1001)초과 시 6(0110)을 더해서 보정
3초과 코드
- BCD코드로 표현된 값에 3을 더해준 값.
- 자기 보수의 성질(자보수 코드)
- 가중치 코드는 아님!
다양한 2진 코드
- 가중치 코드
- 각 2진수 자리에 고정된 수를 가지고 있는 코드
- 8421, 2421, 84-2-1코드 등
- 비가중치 코드
- 각 2진수 자리에 고정된 수가 없는 코드
- 데이터 변환과 같은 특수한 용도로 쓰임
- 3초과 코드, 그레이 코드
그레이 코드
- ADC나 입출력 장치 코드로 주로 쓰임.
- 2진수와 비교했을 때 최상위 비트는 그대로 쓰고 뒷 3자리는 전 비트와 XOR연산
BCD코드, 2421코드, 84-2-1코드 = 가중치 코드
3초과 코드, 2421코드, 84-2-1코드 = 자보수 코드
3.2 에러 검출 코드
패리티 비트
- 짝수패리티 : 데이터에서 1의 개수를 짝수로 맞춤
- 홀수패리티 : 데이터에서 1의 개수를 홀수로 맞춤
- 에러가 짝수개(2개, 4개…) 발생하면 검출하지 못함
- 에러 검출기
- 짝패 : y = 0(에러 없음), y = 1(에러 발생)
- 홀패 : y = 1(에러 없음), y = 0(에러 발생)
병렬 패리티
- 패리티 비트를 하나만 사용하면 에러 검출은 가능하지만 정정할 수는 없기 때문에 가로와 세로에 대해 패리티를 검사하면 에러가 발생한 블록을 특정해낼 수 있다.
해밍 코드(에러 정정 코드) 꼭 나옴
- 에러를 정정할 수 있는 코드
- 추가적으로 많은 비트가 필요하므로 많은 양의 데이터 전달이 필요
- 패리티 비트가 앞에서부터 1, 2, 4, 8, 16,…의 위치에 들어간다.
- P8부터 P1까지 읽어서 오류 비트의 인덱스를 알 수 있다.
- Pn이 모두 0(오류 없음)이면 오류 없음
- 마찬가지로 오류 비트가 하나일 때만 사용 가능
- 매우 매우 매우 매우 매우 중요
3.3 문자 코드
ASCII 코드
- ANSI가 제정한 정보 교환용 미국 표준 코드
- 128가지의 문자 표현 가능
- 8비트 중 맨 앞자리는 패리티 비트
- 다음 3비트는 존(zone), 다음 4비트가 디지트(digit)
패리티 비트 내다버리고 확장 ASCII코드를 만들 수 있다.
표준 BCD 코드
- 6비트로 영문자까지 표현
- 최대 64문자까지 표현 가능
EBCDIC 코드
- 대형 컴퓨터와 IBM 계열에서 많이 사용함
- ASCII와 호환을 위해 8비트 코드 사용
- 256종류의 문자 코드를 표현 가능
- 하지만 코드표를 보면 많이 비어있음.
유니코드
- ASCII의 한계 극복하기 위해 개발된 국제 표준.
- UTF-8, 16, 32 (일반적으로 판을 나눠서 16사용)
한글코드
- 조합형
- 때에 따라 다른응용프로그램에서 못씀
- 자음과 모음으로 조합 가능한 모든 한글을 사용할 수 있음
- 고어 까지 취급할 수 있음
- 하지만 출력 시 다시 계산해야됨
- 완성형
- 표준
- 초성, 중성, 종성으로 안 나누고 글자 단위로 처리