アプリ版:「スタンプのみでお礼する」機能のリリースについて

グレイコードを整数へ変換したいと思っているのですが、
変換方法がわかりません。どなたか御存知ないでしょうか?

例えば 2進法の数字 01101を 整数に変換するには、
0×2^(4)+1×2^(3)+1×2^(2)+0×2^(1)+1*2^(0)とすれば
整数 13を得ることができます。

グレイコードで表記された 01101を整数に変換するには
どのような計算をすれば よいのかが知りたいことです。
できれば、01101に限らず 2進法の10進法への変換のように一般的な
方法があればと思っています。

御存知なら お助け下さい。

A 回答 (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進法のマッピング
を流用したっていいわけですから。どのような性質を満たしてマッピングしたいのか
きちんと言ったほうが良いと思います。
私は勝手に予想して回答しましたがあなたの望んだものだったでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/28 15:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!