AZ Tools

格雷码转换器

转换

格雷码(反射二进制)是一种二进制数的排列方式,其中相邻的两个值仅相差一个比特。这种单比特变化特性使其在旋转编码器、卡诺图和抗错位置检测中很有价值,因为当多个比特本会同时翻转时,不会出现瞬态的中间值。二进制用 g = b XOR (b >> 1) 转换为格雷码;解码则用累积异或逐位还原。本工具可在所有方向转换:输入十进制数、普通二进制值或格雷码值,即显示其他表示形式。选择固定位宽可为定宽寄存器显示补零。

十进制
42
二进制
101010
格雷码
111111
对照表 (0-7)
十进制二进制格雷码
0000000
1001001
2010011
3011010
4100110
5101111
6110101
7111100

二进制 → 格雷码: g = b XOR (b >> 1)。相邻格雷码值正好相差一个比特。位宽仅用于输出补零。

使用方法

  1. 选择输入是十进制、二进制还是格雷码。
  2. 输入数值,十进制、二进制和格雷码形式即时更新。
  3. 可选设置位宽(4/8/16/32)为二进制和格雷码输出补零。

常见问题

格雷码用于什么?
旋转和线性位置编码器、卡诺图排序,以及任何需要相邻状态间仅变化一个比特以避免转换故障的系统。
如何将二进制转换为格雷码?
将数值与其右移一位的结果异或: gray = n ^ (n >> 1)。解码则从最高有效位起用级联异或反向还原。
为什么二进制 2(10)和 3(11)变成格雷码 11 和 10?
格雷码保证相邻值间仅一个比特之差。从 2 到 3 在二进制中只有最后一位翻转,但格雷码序列会反射以保持每一步都是单比特变化。
能处理大数吗?
可以 — 转换使用任意精度整数,因此远超 32 或 64 位的数值也能精确转换。位宽选项仅用于补零显示。

相关工具