쌓고 쌓다
그레이 코드(Gray Code) 본문
그레이 코드(Gray Code)
- 가중치가 없어 연산에는 부적합
- 아날로그-디지털 변환기나 입출력 장치 코드로 주로 쓰임
- 연속되는 코드들 간에 한 비트만 변환하면 새로운 코드가 된다. -> 오차가 작아짐
오차가 작다?
그레이 코드 0111을 기준으로 직전 코드 0110과 다음 코드 0101과 한 비트씩만 다른 것이 보임
10진 코드 | 2진 코드 | 그레이 코드 |
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 | 1111 |
하지만 2진 코드에서는 비트가 여러개가 바뀌기에 약간의 오차도 큰 수의 차이가 발생한다.
2진 코드-> 그레이 코드 변환
최상위비트(MSB)는 그대로 내려오고
그다음 그레이 비트부터는 이전의 2진코드의 비트와 현재 위치의 2진코드의 비트를 XOR 연산하여 표시.
XOR 연산: 같으면 0, 다르면 1
그레이 코드 -> 2진 코드 변환
그레이 코드의 MSB는 그대로 내려와 쓰고
그 다음부터는 앞의 2진 코드 비트와 현재 위치의 그레이 코드 비트를 XOR 연산하여
표시해 나간다.
'Git & CS' 카테고리의 다른 글
해밍 코드 생성 및 에러 검출 (0) | 2022.09.22 |
---|---|
패리티 비트와 병렬 패리티 (0) | 2022.09.21 |
BCD 코드와 3초과 코드 (0) | 2022.09.21 |
메모리 구조(Code, Data, Heap, Stack) (2) | 2022.09.19 |
진법 변환 방법 + 소수점 포함 (2진수<->8진수<->10진수<->16진수) (0) | 2022.09.18 |
Comments