グレイコードとは

1ビットずつ変化

連続する値で必ず1ビットのみが変化する特殊な符号化方式

2進法: 0111 → 1000 (4ビット変化)
グレイ: 0100 → 1100 (1ビット変化)

高い対称性

コード列が左右対称の美しい数学的構造を持つ

n=2: 00, 01, 11, 10
n=3: 000, 001, 011, 010, 110, 111, 101, 100
中心線で対称

実用性

センサー読み取り誤差の防止、通信エラー最小化に活用

応用: エンコーダー、QAM通信
ノイズ耐性向上
→ 詳細は「座学」タブを参照

ハミング距離とは

ハミング距離は、2つの同じ長さの文字列で異なる位置の個数を表します。

例: 1010 と 1100 のハミング距離
1 0 1 0
1 1 0 0
→ ハミング距離 = 2 (位置2と位置3が異なる)
グレイコード: 隣接する値のハミング距離は常に1
0 1 0 0 → 1 1 0 0
→ 位置1のみ変化(ハミング距離 = 1)

比較表の操作

600ms

※n変更で範囲が更新されます

バイナリコードとグレイコードの比較表

Decimal
0
Binary
0000
Gray
0000
隣接ハミング距離 ?
Gray: グレイコード同士の距離(常に1)
Bin: バイナリコード同士の距離(1〜数ビット)
Gray=1 / Bin=1
#BinaryGrayΔHamming

グレイコードディスク

バイナリディスク

リングは内側ほど下位ビット。白/黒=0/1。手動回転で読み取りの安定性を体感。

Binary → Gray

1111
変換式: g = b ⊕ (b ≫ 1) ?
記号の意味
: XOR(排他的論理和)
: 右シフト演算
g: グレイコードのビット
b: バイナリコードのビット
1: 1ビット分シフト
計算過程を表示

Gray → Binary

1010
変換式: bₙ = gₙ, bᵢ = bᵢ₊₁ ⊕ gᵢ ?
記号の意味
: XOR(排他的論理和)
bₙ: バイナリの最上位ビット
gₙ: グレイの最上位ビット
bᵢ: バイナリのi番目のビット
gᵢ: グレイのi番目のビット
i: ビット位置(n-1から0まで)
計算過程を表示

グレイコードの応用

絶対エンコーダー

1ビット変化特性を活用
セクター境界での読み取り誤差を防止。ロボット、工作機械、自動車のステアリング角度検出などに使用。

デジタル通信

エラー最小化を活用
QAM、PSK変調で隣接シンボル間のハミング距離を1に保ち、ノイズによる誤り時のビット誤り数を最小化。

論理回路設計

対称性を活用
カルノー図でのGray順配置により、隣接セルのグループ化が容易。状態遷移の最適化と回路簡略化を実現。

A/D・D/A変換器

単調性を活用
アナログ-デジタル変換時の量子化誤差を最小化。音響機器、計測器での高精度変換に使用。

メモリアドレッシング

順次アクセス効率を活用
フラッシュメモリやEEPROMでの書き込み/消去サイクル最適化。隣接アドレスでの電力消費削減。

組合せ最適化

探索効率を活用
遺伝的アルゴリズム、焼きなまし法での近傍探索。1ビット変化による局所探索の効率化。

暗号・セキュリティ

サイドチャネル攻撃対策を活用
スマートカードや暗号チップでの電力消費パターン隠蔽。ハミング重み変化の最小化により、電力解析攻撃への耐性を向上。

FPGA・VLSI設計

グリッチ最小化を活用
ステートマシンの状態遷移で中間状態でのグリッチを防止。クロック境界での信号安定性確保とタイミング違反回避。

光通信・レーダー

位相連続性を活用
FMCW(周波数変調連続波)レーダーや光ファイバー通信での位相変調。急激な位相変化を避けた信号品質向上とノイズ低減。