• ベストアンサー

符号無しの16ビット整数計算

はじめまして。数学初心者の者です。 2進数の計算でつまずいています。 いきなりなのですが質問内容を失礼します。  0000000000000000 ×1000000000000000 =1000000000000001 のイコールになる理由。 違うものでいうと、2ビットの場合 00×00=01 01×00=00 11×11=00 などビット数を減らした場合でも理解ができません。 初歩的なことかと思いますが、宜しくお願いいたします。

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

  • ベストアンサー
  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.4

たびたびすみません。#2と#3です。 #3の内容で、 >特に、2のビット数乗 + 1を法として計算するので、元の2進数を+1したもので計算すれば答えが出ます。 が、致命的に意味不明でした。 寝惚けていたのか、そのように計算したところで答えとは一致しません。 ですので、大変申し訳ありませんが、その箇所については取り下げさせてください。

kameeuusa
質問者

補足

訂正の書き込みありがとうございます。 mod 2^(ビット数)+1の乗算を一つ一つ考えていきます。 なんどもありがとうございました。

その他の回答 (3)

  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.3

>私が書いていました × の記号は >mod2^16+1(mod65537)の乗算の操作 >の意味でした。 それでしたら、話は2進数が何かというのではなく、単純にmod 2^h + 1 (hはビット数)の計算を考えればいいと思います。 特に、2のビット数乗 + 1を法として計算するので、元の2進数を+1したもので計算すれば答えが出ます。 これは下の2ビットの場合でも、"×"をmod 2^2 + 1 の積であると思えば同じですね。

  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.2

#1の回答者さんも仰っていますが、その計算は正しくないと思います。 論理積だとしても、16ビットの計算は  0000000000000000 ×1000000000000000 =0000000000000000 ですし、2ビットの方も 00×00=00 01×00=00 11×11=11 ではないでしょうか。 2進数のかけ算は、参考URLで説明しているようなやり方で行います。

参考URL:
http://www.geocities.jp/zaqzaqpa/2sinsuu2.htm
kameeuusa
質問者

補足

回答ありがとうございます。 申し訳ございませんが質問内容に誤りがありました。 #1の回答者様の補足内容の欄に追加で書き込みをいたしましたので 宜しくお願いいたします。

回答No.1

イコールにはなりませんが?  0000000000000000 ×1000000000000000 =00000000000000000000000000000000 です。 00×00=0000 01×00=0000 11×11=1001 ただし、×は論理積ではなくて算術積とします。

kameeuusa
質問者

補足

すばやいご回答ありがとうございます。 質問内容のミスをしていました。すみません。 私が書いていました × の記号は mod2^16+1(mod65537)の乗算の操作 の意味でした。

関連するQ&A