格雷码计算教程

一、二进制转格雷码

步骤

  1. 写下要转的二进制数
  2. 整体向右移1位,最左边补0
  3. 上下两个数按位异或

异或运算规则

  • 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位格雷码
0000000000
1001000001
2010001011
3011001010
4100010110
5101010111
6110011101
7111011100

三、递归生成格雷码

核心思路

n位格雷码 = (n-1位格雷码正序加0) + (n-1位格雷码逆序加1)

推导

1位格雷码:
["0", "1"]

2位格雷码:

  1. 正序加0:00, 01
  2. 逆序加1:11, 10
  3. 合起来:["00", "01", "11", "10"]

3位格雷码:

  1. 正序加0:000, 001, 011, 010
  2. 逆序加1:110, 111, 101, 100
  3. 合起来:["000", "001", "011", "010", "110", "111", "101", "100"]

标签: none

评论已关闭