グレイコードとは
1ビットずつ変化
連続する値で必ず1ビットのみが変化する特殊な符号化方式
グレイ: 0100 → 1100 (1ビット変化)
高い対称性
コード列が左右対称の美しい数学的構造を持つ
n=3: 000, 001, 011, 010, 110, 111, 101, 100
中心線で対称
実用性
センサー読み取り誤差の防止、通信エラー最小化に活用
ノイズ耐性向上
→ 詳細は「座学」タブを参照
ハミング距離とは
ハミング距離は、2つの同じ長さの文字列で異なる位置の個数を表します。
0 1 0 0 → 1 1 0 0
比較表の操作
※n変更で範囲が更新されます
バイナリコードとグレイコードの比較表
0000
0000
Bin: バイナリコード同士の距離(1〜数ビット)
| # | Binary | Gray | ΔHamming |
|---|
グレイコードディスク
バイナリディスク
リングは内側ほど下位ビット。白/黒=0/1。手動回転で読み取りの安定性を体感。
Binary → Gray
1111g = b ⊕ (b ≫ 1)
?
⊕: XOR(排他的論理和)
≫: 右シフト演算
g: グレイコードのビット
b: バイナリコードのビット
1: 1ビット分シフト
Gray → Binary
1010bₙ = 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(周波数変調連続波)レーダーや光ファイバー通信での位相変調。急激な位相変化を避けた信号品質向上とノイズ低減。