プロが教えるわが家の防犯対策術!

エクセル2010を使って2進数の乗算と加算を複数回行い、最後にそれぞれの答えをすべて加算したいのですが、こういうことは可能でしょうか。
また、最後の答えをすべて加算したときの桁数は100桁程度になると思います。
(できれば10進数をキーボードから入力すれば2進数の変換から複数回の乗算と加算などを自動で計算できれば大変ありがたいのですが)

書店で参考書を探したのですが、10進数→2進数、2進数→10進数の変換については載っているのですが、2進数の計算についてはどの本にも記述がありませんでした。

どうぞよろしくお願いします。

A 回答 (3件)

2 進数では、乗法や除法も定義されます。

0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にできるからいいのですが、質問文を読むと、桁数があまりにも多すぎなことが問題だと思います。

2^(100-1) = (2^100)/2
     = {(2^10)^10}/2
     = (1024^10)/2
     > (1000^10)/2
     = {(10^3)^10}/2
     = (10^30)/2
     = 5 x 10^29

となり、たとえ 10 進数で表示しても、0 が 29 個も並んだ数よりも更に大きいことになるわけだから、天文学的どころでは済まない、途方もない数だと分かります。せめて対数を取るくらいの工夫は必要でしょう。Excel の対数としては、LOG、LOG10、LN 関数が使えます。log x + log y = log xy というふうに、和から積を作れるのでしたね。

また、Excel の仕様では、誤差なく計算できる最大の桁数は 15 桁です。特に対数を取らない場合は、その点にも注意が必要です。


それから、BIN2DEC 関数は、符号を含めて 10 ビットまでの整数にしか対応できないことにも注意してください。つまり数字の部分は 9 ビットなので、-512 以上 511 以下の整数です。

小数も扱うには、(1)元の数を何倍かして小数点以下をなくす(整数化する)方法とか、(2)ユーザー定義関数その他の方法により 2 進の小数を 10 進の小数に直し、計算後に 10 から 2 に戻す方法などが考えられます。何倍かすると言っている意味は、10 進数を 10 倍すると小数点が右に一つ移動するのと同様に、2 進数では倍にすると小数点が動くという性質を使うということです。

次のページを参考にしてください。

2 進小数の求め方 http://oshiete.goo.ne.jp/qa/6756230.html
2 進小数の加法  http://detail.chiebukuro.yahoo.co.jp/qa/question …
    • good
    • 0
この回答へのお礼

丁寧な説明をしていただきありがとうございました。
ぜひ参考にさせていただきたいと思います。
ありがとうございました。

お礼日時:2014/01/22 13:50

>2進数の計算についてはどの本にも記述がありませんでした。


2進数は0と1の文字列で表していますがONとOFFを表しているだけなので乗算や除算ができません。
加算だけはできますので乗算は加算を繰り返すことで対処しています。
減算は補数を加算することで計算できるとされています。
これらのことはコンピューターの成り立ちを読み返せば理解できるでしょう。

Excelでは10進数を2進数に変換して文字列で表記する方法もありますが1度に変換できるのは10進数の511までで直接2進表示を加算できません。

=DEC2BIN(511,10) → "0111111111"
    • good
    • 1

2進数の乗算と加算の計算は変換しながらそのままでできます。


例えば、=DEC2BIN(BIN2DEC(B1)/BIN2DEC(B2))等です。
    • good
    • 0

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