グレイコード
https://gyazo.com/44b9bb2fc0f217724908de3903821081
二進数表現。隣り合う数とのビットの差分が 1 ビット分になる。
table:gray code
0: 0000 4: 0110 8: 1100 C: 1010
1: 0001 5: 0111 9: 1101 D: 1011
2: 0011 6: 0101 A: 1111 E: 1001
3: 0010 7: 0100 B: 1110 F: 1000
位取り記数法により二進数を表そうとすると、数値変化の瞬間に数値を誤読する可能性がある。
例えば 3 から 4 に変わる場合
3: 011
4: 100
3 から 4 に変わる際に全てのビットを同時に変化させるように保証するのが難しい。
ビットの変化のズレと読み込みタイミングによって以下の値が取得され得る
000、001、010、011、100、101、110、111
……全部やないか
数値が 1 異なる際には必ず 1 ビットだけ変化するように定められていれば、この類の読み込みエラーは無くなる。
3: 010
4: 110
論理的な組み合わせを列挙する際にグレイコードを用いると類似する物を隣接させることができる。
絵の具の混色
ーーー $ \color{#fff}\bull白
ーー Y $ \color{#ff0}\bull黄
ーM Y $ \color{#f00}\bull赤
ーM ー $ \color{#f0f}\bullマゼンタ
C M ー $ \color{#00f}\bull青
C M Y $ \color{#000}\bull黒
C ーY $ \color{#0c0}\bull緑
C ーー $ \color{#0ff}\bullシアン
位取り記数法による二進数$ xとグレイコード$ gの変換
$ g=x\ {\rm xor}\ (x>>1)
例:6 の変換
. 1 1 0
xor) 0 1 1 0
. 1 0 1 -
$ x=g\ {\rm xor}\ (g>>1)\ {\rm xor}\ (g>>2)\ {\rm xor}\ (g>>3)\cdots
. 1 0 1
. 1 0 |1
xor) 1 |0 1
. 1 1 0 - -