• ベストアンサー

グレイコードの整数への変換方法 御存知ないですか?

グレイコードを整数へ変換したいと思っているのですが、 変換方法がわかりません。どなたか御存知ないでしょうか? 例えば 2進法の数字 01101を 整数に変換するには、 0×2^(4)+1×2^(3)+1×2^(2)+0×2^(1)+1*2^(0)とすれば 整数 13を得ることができます。 グレイコードで表記された 01101を整数に変換するには どのような計算をすれば よいのかが知りたいことです。 できれば、01101に限らず 2進法の10進法への変換のように一般的な 方法があればと思っています。 御存知なら お助け下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • nagata
  • ベストアンサー率33% (10/30)
回答No.1

ビット列をan,an-1,,,a0として グレイコードの数を(an,an-1,,,a0)gと表記することにします。 またビット列から{0,1}への関数parityを parity(x)=0 (xの中の1の数が偶数個) parity(x)=1 (xの中の1の数が奇数個) と定義します。 グレイコードの整数への変換は次のように求められます。 (an,an-1,,,a0)g=Σ_{i=0,,,n}parity(an,,,ai)*2^i 例えば(01101)gであれば 2^4*parity(0)+ 2^3*parity(01)+ 2^2*parity(011)+ 2^1*parity(0110)+ 2^0*parity(01101) =2^3+1=9 となります。 ところで整数へ変換したいとだけありますがちょっと言葉が足りないように思います。 とにかく何でもいいから整数へマッピングしたいのであれば2進法のマッピング を流用したっていいわけですから。どのような性質を満たしてマッピングしたいのか きちんと言ったほうが良いと思います。 私は勝手に予想して回答しましたがあなたの望んだものだったでしょうか?

Richard-B
質問者

お礼

nagata様 回答ありがとうございました。 言葉が足りなかった点については、お詫び致します。 私の方も、グレイコードの詳細について、まだあまり知識がなかつたので このような不充分な質問の形になりました。 回答頂いた内容で、十分です。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A