グレー コード または反射バイナリ コードは、連続する 2 つの数値が 1 ビットだけ異なる数値のバイナリ表現です。
たとえば、1 のグレイ コードは 001、2 のグレイ コードは 011 です。
グレイ コードは、状態が変化したときに通常のバイナリ表現で発生する可能性のある一部のデータ エラーを防ぐため、エラー修正によく使用されます。
グレイ コードは、そのユニークな特性により、K マップ、通信などにも役立ちます。
続きを読む前に、10 進数、2 進数、およびグレイ コード表記について勉強してください。
10 進数 n が与えられた場合、その数値の 10 進数形式のグレイ コードを見つけます。
###例### リーリーしたがって、グレイ コードの 10 進数で 3 に相当するのは 2 です。
リーリー説明 -> 5 を 2 進数で表すと 101 になります。グレイ コード表現は 111、10 進数表現は 7 です。
したがって、5 に相当するグレイ コードの 10 進数は 7 です。
###解決###コンパイラは数値をバイナリ形式で理解します。
したがって、数値を等価なバイナリからグレイ コードに変換する必要があるだけです。
バイナリからグレイコードへの変換
バイナリ表現は、グレイ コードの左端のビットと等しくなります。右側の次のビットは、連続するバイナリ ビットの XOR 演算によって検出されます。
###例えば -###
バイナリ コードとグレイ コードの左端のビットは同じです。したがって、グレイコードの左から最初のビットは 0 になります。
アルゴリズム: ビットごとの演算子の使用
###例###
問題文 2
次に、グレイ コードをバイナリ コードに変換して、1111 から 1010 を取得します。
グレイコード 1010 の 2 進法は 1100 です。1100 の 10 進法は 12 です。
バイナリ コードの左端のビット (MSB) は、グレイ コードの MSB と同じです。次のビットは、前のインデックス付きバイナリ ビットと現在のインデックス付きグレースケール ビットを XOR 演算することによって検出されます。
例: グレイ コード 1111 を考えてみましょう。
バイナリ コードの MSB は、グレイ コードの MSB と同じになります。したがって、MSB は 1 になります。
同様に、左から 3 番目の桁については、0 ^ 1 = 1 となります。
左から 4 番目の桁の場合、1 ^ 1 = 0。
つまりバイナリコード: 1010。
###例###この記事では、グレイ コードの 10 進数に相当する値と、指定された数値 n の逆数を求める問題を解決します。私たちはビットごとの演算子を使用してこの問題を解決しました。問題の両方の部分に対して C プログラムが提供されています。
以上がグレイ コードに相当する 10 進数とその逆の順序の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。