본 내용은 2024년 1학기 '컴퓨터논리개론' 수업을 들으며 노션에다가 정리한 글을 옮겨온 포스트입니다.
제 공부를 위해 작성한 거라서 제가 알아보기 편하게 정리했습니다. 여러분들도 자유자재로 열람 가능하지만 간혹 이해하기 힘든 부분이 있을 수도 있다는 점 양해 부탁드립니다!
1. BCD 코드와 3초과 코드
- BCD 코드: 10진수 0부터 9까지를 2진화한 코드. 실제 표기는 2진수지만 10진수 처럼 사용! → 1010부터 1111까지 6개는 사용하지 않는다.
- 3초과 코드: BCD코드에 3을 더하여 나타낸 코드. 자기 보수의 성질을 가진다!
2. 다양한 2진 코드들
이외의 코드는 가중치 코드와 비가중치 코드로 나눌 수 있다.
- 가중치 코드: 비트 위치에 따라 값이 정해지는 코드.
- 비가중치 코드: 각 위치에 해당하는 값이 없으며, 데이터 변환과 같은 특수한 용도로 사용.
3. 그레이 코드
가중치가 없어 연산에는 부적합하지만, 아날로그-디지털 변환기나 입출력 장치 코드로 주로 사용한다.
연속되는 코드들 간에 한 비트만 변하여 새로운 코드가 되며, 입력 코드로 사용하면 오차가 작아지는 특징!!
그레이코드 ←→ 2진 코드 변환

그레이 코드를 이용하면, 입출력 시스템에서 오차를 줄일 수 있다. 왜? 앞뒤 한 비트만 차이가 나니까! 한 두 비트 정도 차이 나도 오차 작음.

참고로 흰색이 1, 주황색이 0임.
4. 에러 검출 코드
1) 패리티 비트
에러 검출 코드로 가장 간단하게 사용되는 것이 패리티 비트를 사용하는 코드!! → 메모리에 저장하거나 전달할 데이터에 패리티를 붙여서 전송한다.
1의 개수를 홀수로 맞추느냐, 짝수로 맞추느냐에 따라 홀수 패리티와 짝수 패리티로 나뉜다! → 짝수(홀수) 패리티의 경우, 데이터가 전달된 후 1의 개수가 짝수(홀수) 개이면 정확하게 전달된 것.

그런데 패리티 비트는 단지 에러가 있는지 검출만 할 뿐이며, 에러가 홀수 개 발생하면 검출이 가능하지만 짝수 개 발생하면 검출이 불가능하다!
→ 가로와 세로 데이터들에 패리티를 적용하는 병렬 패리티를 사용해서 에러를 검출하여 그 위치를 찾아 정정할 수 있게 함!!!


이렇게 가로 세로 틀린 행열에 동시에 속하는 저 부분이 틀린 곳이라서, 저 부분을 고치면 되는 것!!!
이게 패리티 검출기고, 패리티의 에러 검출기는 아래와 같다.
- 짝수 패리티 검출기: 검출기의 출력 Y=0인 경우 에러 발생X, Y=1인 경우 에러 발생.
- 홀수 패리티 검출기: 검출기의 출력 Y=1인 경우 에러 발생X, Y=0인 경우 에러 발생.
2) 해밍 코드
패리티 코드를 응용하여 에러를 정정할 수 있도록 고안한 코드! 한 비트에 에러가 발생했을 때, 그 위치를 찾아서 정정할 수 있는 코드다.
- 패리티 코드(추가 비트 하나 필요)와 달리, 추가적으로 많은 비트가 필요하므로 많은 양의 데이터 전달이 필요.
- 해밍 코드 또한 2개 이상의 비트에 에러가 발생하면 정정이 불가능.
- 짝수 패리티를 사용한다.
- 수신받고 에러를 검출할 때, 복원한 패리티 비트가 모든 비트가 0이면 오류X, 하나라도 1이면 오류난 것!

패리티비트 만들기

원본 데이터가 00101110일 때 해밍 코드 생성하는 과정

아 참고로 저 (+) 기호는 같으면 0, 다르면 1이 되게 하는 기호!!

010101011110이 만들어져서 송신하지만, 수신받았을 때 010111011110으로 잘못 받아진 경우 검출하는 방법.



5. 영숫자 코드
지금까지는 연산용 숫자 코드들이고, 이제는 컴퓨터에서 사용하는 각종 제어코드와 문자, 숫자, 특수문자를 표시하기 위한 코드들을 살펴보자!
1) ASCII 코드
3비트 존(zone) + 4비트 디지트(digit) + 1비트 패리티 → 8비트 코드! → 0~127까지 128가지 문자를 표현!
- ‘0’: 30H
- ‘A’: 41H
- ‘a’: 61H
장점
- 전문을 대상으로 한 비통제 탐색이 가능하다
- ASCII코드를 사용하는 모든 시스템 및 응용 프로그램 간의 호환이 가능
단점
- 다양한 비텍스트적 요소를 구현할 수 없다.
- 미국과 일부 유럽의 문자만을 지원한다.
그래서 패리티 비트를 빼고, 128~255까지 추가 128가지 문자를 사용할 수 있도록 확장 ASCII코드가 개발되었지만, 한글 등은 여전히 확장 ASCII코드를 써도 불편함…

2) 표준 BCD 코드
2비트의 zone비트 + 4비트의 digit비트 + 패리티 체크용 1비트 → 총 7비트로 한 문자를 표현!
최대 64문자까지 표현 가능하다!

3) EBCDIC 코드
4비트의 zone비트 + 4비트의 digit비트 + 패리티 체크용 1비트 → 총 9비트로 한 문자를 표현! 256가지 문자코드를 표현할 수 있다!

4) 유니코드
컴퓨터는 기본적으로 숫자만 처리하는데, 이 유니코드는 플랫폼에 상관없이 모든 문자에 대해고유번호를 제공한다!
클라이언트/서버 또는 다중 계층 응용 프로그램과 웹 사이트에 유니코드를 도입하면 장점
- 기존 문자셋을 사용할 때보다 상당한 비용 절감 효과
- 리엔지니어링 없이 여러 플랫폼, 언어 및 국가를 지원할 수 있다
- 데이터를 손상 없이 전송 가능
5) 한글 코드
ASCII코드 기반으로 16비트를 사용하여 하나의 문자를 표현하며, 조합형과 완성형으로 나뉜다. 일반적으로 컴퓨터에서는 완성형을 사용하며, 한글의 특성을 완전히 살리지 못한다는 한계를 보완하기 위해서 워드프로세서에서는 조합형을 사용한다!
- 조합형 한글의 초성, 중성, 종성을 각각 5비트로 나타내고 MSB를 1로 하여 한글임을 표시.
- 완성형 음절을 2바이트의 2진수와 일대일로 대응하여 표현하는 방법.
'컴퓨터 공학 > 논리회로' 카테고리의 다른 글
[논리 회로] 6장. 논리식의 간소화 (0) | 2024.06.07 |
---|---|
[논리 회로] 5장. 불 대수 (0) | 2024.06.07 |
[논리 회로] 4장. 논리 게이트 (0) | 2024.06.07 |
[논리 회로] 2장. 수의 체계 (0) | 2024.06.07 |
[논리 회로] 1장. 들어가기 (0) | 2024.06.07 |