그레이 코드 변환기
이진수와 그레이 코드를 서로 바꾸고 대조표를 그립니다. 이웃한 값이 한 비트만 다르다는 성질을 표에서 바로 확인할 수 있습니다.
표시할 자리수입니다. 계산 자체는 자리수와 무관합니다
그레이 코드
0111
10진수 7 · 16진수 0x7
4비트 대조표
| 10진 | 이진 | 그레이 | 그레이 변화 | 이진 변화 |
|---|---|---|---|---|
| 0 | 0000 | 0000 | — | — |
| 1 | 0001 | 0001 | 1비트 | 1비트 |
| 2 | 0010 | 0011 | 1비트 | 2비트 |
| 3 | 0011 | 0010 | 1비트 | 1비트 |
| 4 | 0100 | 0110 | 1비트 | 3비트 |
| 5 | 0101 | 0111 | 1비트 | 1비트 |
| 6 | 0110 | 0101 | 1비트 | 2비트 |
| 7 | 0111 | 0100 | 1비트 | 1비트 |
| 8 | 1000 | 1100 | 1비트 | 4비트 |
| 9 | 1001 | 1101 | 1비트 | 1비트 |
| 10 | 1010 | 1111 | 1비트 | 2비트 |
| 11 | 1011 | 1110 | 1비트 | 1비트 |
| 12 | 1100 | 1010 | 1비트 | 3비트 |
| 13 | 1101 | 1011 | 1비트 | 1비트 |
| 14 | 1110 | 1001 | 1비트 | 2비트 |
| 15 | 1111 | 1000 | 1비트 | 1비트 |
그레이 쪽은 모든 행에서 정확히 1비트만 바뀝니다. 이진 쪽은 3→4에서 3비트, 7→8에서 4비트가 한꺼번에 바뀝니다.
사용 방법
- 1이진값과 그레이 코드 중 어느 쪽을 넣을지 고릅니다.
- 2표시할 비트 수를 고르고 값을 넣습니다.
- 3대조표에서 이웃한 값이 정확히 한 비트만 다른 것을 확인할 수 있습니다.
자주 묻는 질문
이진값을 그레이 코드로 바꿀 때는 g = b XOR (b >> 1)입니다. 자기 자신과 한 칸 오른쪽으로 민 값을 XOR하면 됩니다. 되돌릴 때는 g XOR (g>>1) XOR (g>>2) XOR …처럼 상위 비트부터 누적 XOR을 합니다. 예를 들어 5(0101)는 그레이 코드로 7(0111)입니다.
이웃한 두 값이 정확히 한 비트만 다르기 때문입니다. 보통의 이진수는 3(011)에서 4(100)로 넘어갈 때 세 비트가 한꺼번에 바뀌는데, 절대형 로터리 엔코더에서 이런 경계에 브러시가 걸치면 비트마다 읽히는 시점이 어긋나 111이나 000 같은 엉뚱한 값이 읽힙니다. 그레이 코드는 한 비트만 바뀌므로 경계에서 읽어도 이전 값 아니면 다음 값입니다.
만드는 방법에서 온 이름입니다. n−1비트 표를 그대로 쓴 뒤 거울에 비춘 것처럼 뒤집어 이어 붙이고, 앞쪽 절반에는 0을 뒤쪽 절반에는 1을 앞에 붙이면 n비트 표가 됩니다. 뒤집어 붙이는 지점에서 앞 비트 하나만 바뀌기 때문에 이웃 조건이 유지됩니다.
그렇습니다. 4비트라면 15의 그레이 코드가 1000이고 0의 그레이 코드가 0000이라 한 비트만 다릅니다. 이 순환 성질 덕분에 원판처럼 한 바퀴 도는 것에 쓸 수 있습니다. 반사 구조로 만들었기 때문에 나오는 성질입니다.
그것이 2비트 그레이 코드이기 때문입니다. 이웃한 칸이 변수 하나만 다르게 만들어야 인접한 1들을 하나로 묶을 수 있는데, 00·01·10·11처럼 보통의 순서로 적으면 01과 10이 두 변수나 달라져 묶을 수 없습니다.
이 계산기는 32비트까지만 다룹니다. 자바스크립트의 비트 연산이 32비트 정수로 잘려서 그 위는 값이 잘리거나 부호가 뒤집히기 때문입니다. 엔코더와 카르노 맵 용도로는 충분하며, 더 큰 값이 필요하면 BigInt를 쓰는 구현이 따로 필요합니다.
전송되지 않습니다. 모든 변환은 브라우저 안에서만 이루어지고, 넣으신 값은 이 기기를 벗어나지 않습니다.
알아두면 좋은 점
- 32비트까지 다룹니다. 자바스크립트 비트 연산의 한계 때문입니다.
- 음수와 소수는 다루지 않습니다.
- 여기서 다루는 것은 표준적인 반사 이진 코드입니다. 균형 그레이 코드나 n항 그레이 코드 같은 변형은 범위 밖입니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 31일 · 결과는 참고용 추정치입니다.