// グレイコード - 連続する値の間で1ビットだけが変化する2進数体系
連続する値の間で変化するのは常に1ビットだけです。
アナログ-デジタル変換時の誤りを減らします。
最初と最後の値も1ビットだけが異なるように設計されています。
グレイコード(反射2進コード)は、連続する2つの値が常に1ビットだけ異なるように構成された2進数体系です。各ビットを直前のビットとXORすることで生成されます。この特性により、位置エンコーダやデジタルシステムでの遷移エラーを抑える用途に適しています。
Decimal | Binary | Gray Code 0 | 0000 | 0000 1 | 0001 | 0001 2 | 0010 | 0011 3 | 0011 | 0010 4 | 0100 | 0110 5 | 0101 | 0111 6 | 0110 | 0101 7 | 0111 | 0100 注: 連続するグレイコード間では常に1ビットだけが変化します
グレイコードは、反射2進コードとも呼ばれる符号で、連続する値が常に1ビットだけ異なるように設計された2進コードです。遷移の途中で誤った値を読み取ってしまう問題を防ぐため、デジタルシステムで広く利用されています。
バイナリからグレイコードへの変換手順: 1) 最上位ビット (MSB) はそのままにする、2) それ以降の各ビットについて、現在のビットと直前のビットのXORをとる。式: G[i] = B[i] XOR B[i-1]。例えば、バイナリ 1011 はグレイコード 1110 になります。
通常の2進数では、7 (0111) から 8 (1000) へのように複数ビットが同時に変化することがあり、その途中の不正な状態が読み取られる可能性があります。グレイコードなら1ステップごとに1ビットしか変化しないため、ロータリーエンコーダなどでの読み取りが安定します。
グレイコードはロータリーエンコーダ、カルノー図による論理簡略化、デジタル通信におけるエラー訂正、遺伝的アルゴリズム、A/Dコンバータなど、多くの分野で利用されています。