// 格雷码——一种相邻数值仅有一位二进制位不同的数字系统
相邻编码之间仅有一位比特发生变化。
在模数转换(ADC)等场景中减少读数抖动和误码。
首尾码字之间同样只相差一位比特,适合环形计数。
格雷码(Gray Code,又称反射二进制码)是一种二进制编码方式,相邻两个数的码字只在一位上不同。常见生成方式是:将二进制数的每一位与其前一位做异或(XOR)。这种“单比特变化”特性在位置编码器、数字电路和抗干扰设计中非常有用。
Decimal | Binary | Gray Code 0 | 0000 | 0000 1 | 0001 | 0001 2 | 0010 | 0011 3 | 0011 | 0010 4 | 0100 | 0110 5 | 0101 | 0111 6 | 0110 | 0101 7 | 0111 | 0100 说明:任意相邻的格雷码之间只有 1 位不同
格雷码是一种相邻状态只变化一位二进制位的编码方式,又叫反射二进制码。与普通二进制计数相比,它能在状态切换时避免多位同时翻转,从而减少错误读数。
转换规则:1)最高位保持不变;2)从次高位开始,每一位等于当前二进制位与前一位的异或。公式:G[i] = B[i] XOR B[i-1]。例如,二进制 1011 对应的格雷码是 1110。
在纯二进制中,从 0111 到 1000 需要 4 位同时变化,如果传感器不同步,很容易在中间读到错误值。格雷码每次只翻转一位,大大降低了旋转编码器、滑块电位器等设备在边沿切换时的歧义。
格雷码广泛应用于旋转编码器、卡诺图化简、数字通信调制与纠错、遗传算法中的染色体编码,以及各种需要避免“多位跳变”的计数器与采样系统。