ホームページ >バックエンド開発 >C++ >グレイ コードに相当する 10 進数とその逆の順序

グレイ コードに相当する 10 進数とその逆の順序

WBOY
WBOY転載
2023-09-07 18:33:021516ブラウズ

グレイ コードに相当する 10 進数とその逆の順序

グレー コード または反射バイナリ コードは、連続する 2 つの数値が 1 ビットだけ異なる数値のバイナリ表現です。

たとえば、1 のグレイ コードは 001、2 のグレイ コードは 011 です。

グレイ コードは、状態が変化したときに通常のバイナリ表現で発生する可能性のある一部のデータ エラーを防ぐため、エラー修正によく使用されます。

グレイ コードは、そのユニークな特性により、K マップ、通信などにも役立ちます。

前提条件

続きを読む前に、10 進数、2 進数、およびグレイ コード表記について勉強してください。

問題文 1

10 進数 n が与えられた場合、その数値の 10 進数形式のグレイ コードを見つけます。

###例### リーリー

説明 -> 3 を 2 進数で表すと 011 になります。グレイ コード表現は 010 です。010 の 10 進表現は 2 です。

したがって、グレイ コードの 10 進数で 3 に相当するのは 2 です。

リーリー

説明 -> 5 を 2 進数で表すと 101 になります。グレイ コード表現は 111、10 進数表現は 7 です。

したがって、5 に相当するグレイ コードの 10 進数は 7 です。

###解決###

コンパイラは数値をバイナリ形式で理解します。

したがって、私たちのプログラムでは、数値を 10 進形式で入力すると、2 進数として解釈されます。

したがって、数値を等価なバイナリからグレイ コードに変換する必要があるだけです。

バイナリからグレイコードへの変換

バイナリ表現は、グレイ コードの左端のビットと等しくなります。右側の次のビットは、連続するバイナリ ビットの XOR 演算によって検出されます。

###例えば -###

n = 3 を考えてみましょう。3 のバイナリ コードは 011 です。

バイナリ コードとグレイ コードの左端のビットは同じです。したがって、グレイコードの左から最初のビットは 0 になります。

    左から 2 桁目は、バイナリ コードの左から 1 桁目と 2 桁目の XOR を計算します。 0 XOR 1 = 1。
  • 左から3桁目は、バイナリコードの左から2桁目と3桁目のXORをとります。 1 XOR 1 = 0。
  • つまり、グレーコード: 010。
  • アルゴリズム: ビットごとの演算子の使用

  • 次の手順で番号 n のグレイ コードを取得できます -

n 右に 1 シフトします。

    右シフトした数値と元の n の XOR を計算します。
  • ###例###
  • 以下は、ビットごとの演算子を使用してバイナリ コードからグレイ コードを見つける C プログラムです。
  • リーリー ###出力### リーリー

    問題文 2

  • グレイ コードの 10 進数値が与えられた場合、その 10 進コード値を求めます。
###例### リーリー

説明 -> 入力として与えられたグレー コード: 1111 (バイナリ値 15)。

次に、グレイ コードをバイナリ コードに変換して、1111 から 1010 を取得します。

1010 は 2 進値 10 です。したがって、出力です。

リーリー

説明 -> 入力として与えられたグレー コード: 1010 (バイナリ値 10)。

グレイコード 1010 の 2 進法は 1100 です。1100 の 10 進法は 12 です。

グレイコードからバイナリコードへの変換

バイナリ コードの左端のビット (MSB) は、グレイ コードの MSB と同じです。次のビットは、前のインデックス付きバイナリ ビットと現在のインデックス付きグレースケール ビットを XOR 演算することによって検出されます。

例: グレイ コード 1111 を考えてみましょう。

バイナリ コードの MSB は、グレイ コードの MSB と同じになります。したがって、MSB は 1 になります。

左の 2 ビットについては、グレイ コードの左 2 ビットとバイナリ コードの左端のビットの XOR を確認します。したがって、1^1 = 0 となります。

同様に、左から 3 番目の桁については、0 ^ 1 = 1 となります。

  • 左から 4 番目の桁の場合、1 ^ 1 = 0。

  • つまりバイナリコード: 1010。

    ###例###
  • 以下は、ビットごとの演算子を使用してグレイ コードからバイナリ コードを検索する C プログラムです。
  • リーリー ###出力### リーリー ###結論は###

    この記事では、グレイ コードの 10 進数に相当する値と、指定された数値 n の逆数を求める問題を解決します。私たちはビットごとの演算子を使用してこの問題を解決しました。問題の両方の部分に対して C プログラムが提供されています。

以上がグレイ コードに相当する 10 進数とその逆の順序の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。