初めまして。2進数の掛け算で困っています。よろしくお願いします。
10進数で2*(-3)=-6ですが、これを3bitの2進数で行ないたいと思います。
すると、010*101(2の補数)=01010となります。
-6は10(2の補数)となるはずですが答えが異なります。
符号拡張というものがあるということで、次はそれで行なってみます。
010*1101(符号を拡張した2の補数)=011010となります。
答えが異なります。ますますわけがわかりません。
----------
次に10進数で(-1)*(-1)=1ですが、これを2bitの2進数で行ないたいと思います。
すると、11(2の補数)*11(2の補数)=1001となります。
1は1となるはずですが答えが異なります。
符号拡張というものがあるということで、次はそれで行なってみます。
111(符号を拡張した2の補数)*111(符号を拡張した2の補数)=110001となります。
答えが異なります。ますますわけがわかりません。
----------
話は変わるのですが、
Nビット×Mビット=N×Mビットになる
とのことです。これも理解できません。
どなたかご教授をお願いしますm(__)m
No.3ベストアンサー
- 回答日時:
先ず最初に、間違いの指摘を一つ。
>Nビット×Mビット=N×Mビットになる
Nビット×MビットはN+Mビットです。
ビット数を数えることは、(2を底とした)対数演算に置き換えられます。
つまり、Nビット数であるnとMビット数であるmを考えると、
log2(n) = N, log2(m) = Mと置けます。
つまりn×mのビット数はlog2(n×m)となり、log2(n)+log2(m)となります。
更に付け加えると、符号付の場合はNビット×Mビットが(N-1)+(M-1)ビットになってしまいます。
これは符号ビットの分、有効ビット数が減るためです。
さて、最初の問題に取り掛かりましょう。
3ビット * 3ビットの演算とありますが、符号ビットがあるので有効ビットは2ビットになってしまいます。
つまり、010 * 101 = 1010となり、4((3-1)+(3-1))ビットの符号付整数となります。
これは10進数に変換すると-6です。
また、符号拡張した場合も010 * 1101 = 11010という5((3-1)+(4-1))ビットの符号付整数ですからこれも-6になります。
次の問題も同様で、11 * 11 = 01、111 * 111 = 0001と、それぞれ1になります。
素晴らしいとしか言葉が思いつきません!
手計算で検証してみました。
間違いなくその法則に従っています。
もっと深く勉強したくなりました。
似たような例題として、
10(unsinged)*101(singed)を考えてみたい思います。
ここでのポイントは片方しか符合が付いていないことです。
10(符号なし)*101(符号あり)なので、
2+2=4ビットの答えが返ってくることになります。
正しいかどうか、検証しましょう。
10*101=1010です。有効ビットは4ビットなので、そのままにします。
10000-1010=110です。つまり6であると言えます。
1010は10進数で言う-6です。正しいということになります。
No.2
- 回答日時:
単純なオーバフローの話と思います。
正式の理論は知らないのですが3ビットで符号付き整数を表せるのは
011=3
010=2
001=1
000=0
111=-1
110=-2
101=-3
100=-4
すなわち、-4~+3までなのです。すなわち、-6は無理なのです。
したがって、問題の計算は4ビット使えば以下のように足ります。
0010*1101=11010=1010=-6(桁あふれのビットは削除)
10進数で(-1)*(-1)=1の計算も同様です。計算は1001ですが上の2つのビットは無いものですから削除して01=1になるのです。
ありがとうございます!
全然そういう考え方を持っていませんでした。
桁あふれのビットを削除という考え方は
使い勝手が良さそうです。
ビットをギリギリまでしか持たずに足し算したりすると
0に戻っちゃう可能性が考えられるので、
余計にビットを持っていて、変化をみればいいですね!
No.1
- 回答日時:
後半だけの回答です。
>話は変わるのですが、
>Nビット×Mビット=N×Mビットになる
>とのことです。これも理解できません。
私も理解できません、というかそれ、間違ってます(笑)。
正しくは、
Nビット×Mビット=N+Mビットになる
ですよ。
10進数で4桁の5000x5000=
2,5000,000で8桁=(4+4)になりますよね。
決して4*4の16桁にはならないでしょ。
この回答への補足
早速のお返事ありがとうございます。
疑問に思うところがあります。
できればご教授をお願いします。
たとえば、100×100=10000(2進数)となりますが、
この場合は、Nが3、Mが3となるので、3+3=6ですが、
答えは5ビットとなっています。
しかし、111×111=110001(2進数)となるので、
この場合は6ビットになります。
桁上がりがあれば…ということでしょうか?
すいません、補足は削除したいくらいの
ダメな質問でした。1000-100=100ですものね。
本当に恥ずかしいです。
10進数での例題は直感的にすごくわかりやすいです。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- 計算機科学 6ビット(符号含む)の二進数 4 2023/04/16 13:22
- 計算機科学 ビット計算 2 2023/04/16 14:26
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- 高校 2進数のオーバフローについて 6 2022/05/12 21:25
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 計算機科学 2進数の計算について 2進数の値は全て8ビットで負数は2の補数形式とする。結果が8ビットで表現出来な 3 2023/07/22 14:08
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- その他(データベース) 4進数風なバーコードは何ですか? 2 2022/11/28 23:33
- その他(学校・勉強) 問2 次の文中の空欄にあてはまる数や言葉を答えなさい。英数字・符号は半角、それ以外の文字は全角で入力 1 2022/06/15 12:39
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
-2の二乗と(-2)の二乗の違いに...
-
達成率の計算方法 マイナス計画...
-
目標値がマイナスの場合の達成...
-
マイナスの数値どうしの対比
-
2マイナス2乗っていくつ?
-
-(マイナス)の以上と以下について
-
マイナス-マイナスはなぜプラ...
-
1-(-1)=2の理由を教えてくださ...
-
マイナス乗
-
正の数負の数で ➕(➕)=➕ ➕(➖)=...
-
無限小とマイナス無限大の違い
-
−3分のπって単位円のどこになる...
-
マイナス2の倍数 「マイナス2は...
-
マイナス記号における括弧の使い方
-
数字の桁の最高と最低は?
-
思い込んで見ま違えをします。 ...
-
計画達成率
-
ゼロの意味
-
1とその数自身しか約数がない数...
-
-x2乗+4X-4を因数分解したらど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
-2の二乗と(-2)の二乗の違いに...
-
達成率の計算方法 マイナス計画...
-
マイナスの数値どうしの対比
-
2マイナス2乗っていくつ?
-
-(マイナス)の以上と以下について
-
1-(-1)=2の理由を教えてくださ...
-
マイナス-マイナスはなぜプラ...
-
目標値がマイナスの場合の達成...
-
算数の質問です 15万で購入した...
-
数字の桁の最高と最低は?
-
−3分のπって単位円のどこになる...
-
ー(X +1)二乗 これって二乗し...
-
四則の混じった計算 かっこの中...
-
マイナス乗
-
マイナス2の倍数 「マイナス2は...
-
マイナス記号における括弧の使い方
-
ルートの中がマイナスの二乗の場合
-
学校の数学の授業で「複素数は...
-
積分で、∫の上端と下端を入れ替...
-
ACCESSのマイナス入力について
おすすめ情報