- ベストアンサー
符号無しの16ビット整数計算
はじめまして。数学初心者の者です。 2進数の計算でつまずいています。 いきなりなのですが質問内容を失礼します。 0000000000000000 ×1000000000000000 =1000000000000001 のイコールになる理由。 違うものでいうと、2ビットの場合 00×00=01 01×00=00 11×11=00 などビット数を減らした場合でも理解ができません。 初歩的なことかと思いますが、宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
たびたびすみません。#2と#3です。 #3の内容で、 >特に、2のビット数乗 + 1を法として計算するので、元の2進数を+1したもので計算すれば答えが出ます。 が、致命的に意味不明でした。 寝惚けていたのか、そのように計算したところで答えとは一致しません。 ですので、大変申し訳ありませんが、その箇所については取り下げさせてください。
その他の回答 (3)
- Gab_km
- ベストアンサー率40% (20/50)
>私が書いていました × の記号は >mod2^16+1(mod65537)の乗算の操作 >の意味でした。 それでしたら、話は2進数が何かというのではなく、単純にmod 2^h + 1 (hはビット数)の計算を考えればいいと思います。 特に、2のビット数乗 + 1を法として計算するので、元の2進数を+1したもので計算すれば答えが出ます。 これは下の2ビットの場合でも、"×"をmod 2^2 + 1 の積であると思えば同じですね。
- Gab_km
- ベストアンサー率40% (20/50)
#1の回答者さんも仰っていますが、その計算は正しくないと思います。 論理積だとしても、16ビットの計算は 0000000000000000 ×1000000000000000 =0000000000000000 ですし、2ビットの方も 00×00=00 01×00=00 11×11=11 ではないでしょうか。 2進数のかけ算は、参考URLで説明しているようなやり方で行います。
補足
回答ありがとうございます。 申し訳ございませんが質問内容に誤りがありました。 #1の回答者様の補足内容の欄に追加で書き込みをいたしましたので 宜しくお願いいたします。
- okazaki0ko
- ベストアンサー率15% (37/238)
イコールにはなりませんが? 0000000000000000 ×1000000000000000 =00000000000000000000000000000000 です。 00×00=0000 01×00=0000 11×11=1001 ただし、×は論理積ではなくて算術積とします。
補足
すばやいご回答ありがとうございます。 質問内容のミスをしていました。すみません。 私が書いていました × の記号は mod2^16+1(mod65537)の乗算の操作 の意味でした。
補足
訂正の書き込みありがとうございます。 mod 2^(ビット数)+1の乗算を一つ一つ考えていきます。 なんどもありがとうございました。