
初めまして。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で質問しましょう!
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
-2の二乗と(-2)の二乗の違いに...
-
-(マイナス)の以上と以下について
-
マイナスの数値どうしの対比
-
−3分のπって単位円のどこになる...
-
2マイナス2乗っていくつ?
-
目標値がマイナスの場合の達成...
-
達成率の計算方法 マイナス計画...
-
四則の混じった計算 かっこの中...
-
マイナス乗
-
1-(-1)=2の理由を教えてくださ...
-
ー(X +1)二乗 これって二乗し...
-
積分で、∫の上端と下端を入れ替...
-
ルートの中がマイナスの二乗の場合
-
計画達成率
-
一次関数の公式y=ax+bは切片が...
-
ドラえもんのフエール銀行が実...
-
按分計算について教えて下さい
-
フルーエントスピーカーという...
-
無限小とマイナス無限大の違い
-
iMac G5 17インチ。売ったらい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
-2の二乗と(-2)の二乗の違いに...
-
-(マイナス)の以上と以下について
-
マイナスの数値どうしの対比
-
1-(-1)=2の理由を教えてくださ...
-
−3分のπって単位円のどこになる...
-
2マイナス2乗っていくつ?
-
目標値がマイナスの場合の達成...
-
計画達成率
-
達成率の計算方法 マイナス計画...
-
ー(X +1)二乗 これって二乗し...
-
マイナス2の倍数 「マイナス2は...
-
マイナス-マイナスはなぜプラ...
-
四則の混じった計算 かっこの中...
-
積分で、∫の上端と下端を入れ替...
-
マイナス記号における括弧の使い方
-
中3の因数分解についてなんです...
-
補数の質問
-
ゼロの意味
-
無限小とマイナス無限大の違い
-
真数Nにマイナスを入れてはいけ...
おすすめ情報