Gray Code

隣り合う値が 1 ビットだけ異なる二進符号です。g(i)=ioplus(igg1)g(i) = i \\oplus (i \\gg 1) の式で生成でき、デジタル通信やエンコーダーで広く使われます。

定義

非負整数 ii に対して、Gray code g(i)g(i) は次の式で定義されます。

g(i)=ioplus(igg1)g(i) = i \\oplus (i \\gg 1)

oplus\\oplus は排他的論理和(XOR)、gg\\gg は右シフトを表します。

生成テーブル

Step 1 / 8
iBinaryigg1i \\gg 1Gray CodeDecChanged Bit
00000000000
10010000011··
20100010113··
30110010102··
41000101106··
51010101117··
61100111015··
71110111004··

ステップ 1 の計算

g(0)=0(01)=0g(0) = 0 \oplus (0 \gg 1) = 0
  • 2 進数: 0000
  • 右シフト: 000 0
  • XOR 結果: 0000

Gray Code の性質

  • 隣り合う値同士の Hamming 距離は常に 1 です。
  • 最後の値と最初の値も 1 ビットだけ異なり、巡回的です。
  • 誤り訂正、デジタル通信、ロータリーエンコーダーなどで使われます。