格雷码
格雷码计算教程
一、二进制转格雷码
步骤
- 写下要转的二进制数
- 整体向右移1位,最左边补0
- 上下两个数按位异或
异或运算规则
- 0 ^ 0 = 0
- 0 ^ 1 = 1
- 1 ^ 0 = 1
- 1 ^ 1 = 0
例子
例1:二进制 101 → 格雷码
原二进制: 1 0 1
右移补0: 0 1 0
按位异或: 1 1 1结果:111
例2:二进制 010 → 格雷码
原二进制: 0 1 0
右移补0: 0 0 1
按位异或: 0 1 1结果:011
例3:二进制 110 → 格雷码
原二进制: 1 1 0
右移补0: 0 1 1
按位异或: 1 0 1结果:101
二、3位格雷码完整表
| 十进制 | 二进制 | 右移1位 | 格雷码 |
|---|---|---|---|
| 0 | 000 | 000 | 000 |
| 1 | 001 | 000 | 001 |
| 2 | 010 | 001 | 011 |
| 3 | 011 | 001 | 010 |
| 4 | 100 | 010 | 110 |
| 5 | 101 | 010 | 111 |
| 6 | 110 | 011 | 101 |
| 7 | 111 | 011 | 100 |
三、递归生成格雷码
核心思路
n位格雷码 = (n-1位格雷码正序加0) + (n-1位格雷码逆序加1)
推导
1位格雷码:["0", "1"]
2位格雷码:
- 正序加0:
00, 01 - 逆序加1:
11, 10 - 合起来:
["00", "01", "11", "10"]
3位格雷码:
- 正序加0:
000, 001, 011, 010 - 逆序加1:
110, 111, 101, 100 - 合起来:
["000", "001", "011", "010", "110", "111", "101", "100"]
评论已关闭