- 締切済み
2進数の計算について
次の計算について教えてください。(答えは8ビット2進数でお願いします) (1)00010110×00000110 (2)11101011÷00111011 よろしくお願いします。
- 電気・電子工学
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tann3
- ベストアンサー率51% (708/1381)
少し詳しく説明してみます。 掛け算は左シフトで計算できます。 (1)は、第2項(割る数)が「110」ですから、第1項(割られる数)を「左に2桁シフト」したものと「左に1桁シフト」したものの「加算」です。 つまり、「N * 110 = (N * 100) + (N * 010)」と考え、「*100」は「左に2桁シフト」、「*10」は「左に1桁シフト」すればよいのです。従って、 「0101 1000」+「0010 1100」=「1000 0100」 割り算は、ちょっと厄介です。 第2項(割る数)を、何桁左にシフトすると「引いて第1項(割られる数)の最高桁の1をなくせるか」を考え、このシフトした数を第1項から差し引きます。(差し引いた結果は正数であること) これを、適当な桁まで計算して残りを「余り」にするか、余りがなくなるまで繰り返します。 シフトした桁数の桁を「1」、シフトしても差し引きできない桁数を「0」としたものが、割り算の商になります。縦書きの筆算をする原理、上記の「掛け算」の逆をやっているということです。 (2)でやってみましょう。 第1項が「1110 1011」、第2項が「11 1011」なので、左に2桁シフトしたいところですが、そうすると結果がマイナスになってしまいますので、引き算できるためには左に1桁しかシフトできません。 そうすると、差し引きすると、 「1110 1011」-「111 0110」=「0111 0101」 今度は「0桁シフト」した第2項が引けるので、 「0111 0101」-「11 1011」=「0011 1010」 小数点以下まで計算すると、右に1桁シフトした「1 1101.1」を差し引いて、 「0011 1010」-「1 1101.1」=「1 1100.1」 次の右に2桁シフトした「1110.11」を差し引いて 「1 1100.1」-「1110.11」=「1101.11」 さらに右に3桁シフトした「111.011」を差し引いて 「1101.11」-「111.011」=「110.011」 と、まだまだ続きます・・・。 ということで、「左に1桁シフト(=2^1)」「0桁シフト(=2^0)」「右に1桁シフト(=2^[-1])」「右に2桁シフト(=2^[-2])」「3桁シフト(=2^[-3])」・・・と続くので、答は 「11.111・・・」 ということになります。「シフトしても差し引けない」桁があれば、その桁が「0」になるのですが、今回の計算ではできてきませんでした。「左に2桁以上(=2^2以上)」がないので、2^2以上の桁が「0」ということです。 2進8桁までで書けば「0000 0011.111・・・」ということです。 答は「8ビット2進数」ということなので、 「0000 0011 余り 0011 1010」 となります。
- aokii
- ベストアンサー率23% (5210/22062)
1000100 11
関連するQ&A
- 2進数と10進数について
高校物理(1)Aのビットパターンの計算に出てくる2進数と10進数の計算でどのような式からその答えになるかがわかりません。2進数と10進数をくわしく教えて下さいおねがいします。
- ベストアンサー
- 物理学
- 2進数の計算について
2進数の計算について分からない問題があるのでお願いします。 (1) 2進5ビットの数値で,01001をバイアス表示とみるとき,10進数ではいくつか (2) 10進数の4を2進5ビットで表す.バイアス表示を用いると,どのように表されるか. できるだけ詳しい回答くれるとありがたいです。
- ベストアンサー
- その他([技術者向] コンピューター)
- 負の2進数の表示がわかりません
Q1:負の数(例えば10進数の[-2])を2進数,4ビットで表すには, 1010(MSDの[1]は[-]を表して,後半の3桁は[2])か 1110([0001]の2の補数) どちらが正しいのですか?(学校ではどちらも習いました) またQ2のような計算をするには補数による表示でないとなりませんか?(絶対値に符号をつけるだけだと計算が合いません) Q2:4ビットで表された2進数の計算で 0101-0010=0101+(1110)=10011 となり,答えが5ビットになってしまいます.下4桁で考えると答えが合っている気がします.これで合っていますか?
- ベストアンサー
- 数学・算数
- ビットの計算方法の質問です。お願いします。
大学での問題で、 (問題)4ビットで次の計算をしなさい。また、これらがどのような計算か10進数 で示してください。 (1)0011-0110= (2)1110-1101= (3)1110-0111= という問題を解かなければならないのですが、どうしても解けません。 提出日が近いため時間がなく、本当に困っています。 解説及びお答えを教えて頂けないでしょうか。 宜しくお願いします。
- 締切済み
- その他([技術者向] コンピューター)
- 2の補数表現2進数が表す10進数は?、
次の2の補数表現の2進数が表す10進数はいくらか? 1111 1111 1111 1111 1111 1111 1111 1111 という問題があるのですが、 これを解くと、まず、上のビット列は2の補数表現なのだから、これはマイナスですよね?そして、次にビット列を2の補数を求めるやり方でやると元の数がわかりますよね(この辺がいまいち解っていない)? という事は全ビットを0にして、最下位ビットに1を 足せばいいから0000 0000 0000 0000 0000 0000 0000 0000 + 1 =0000 0000 0000 0000 0000 0000 0000 0001 となります。10進数だと 1を表すから答えはー1という事になるのでしょうか?お願いします。
- ベストアンサー
- その他(インターネット・Webサービス)
- 2進数の掛け算ができません
初めまして。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
- ベストアンサー
- 数学・算数
- 2進数の計算について
01000111(2)-01101010(2)の計算を補数を用いて求める方法は 01101010を10010101に変更し1を加えて10010110に変更し 01000111 +10010110 =11011101(2)で正しいでしょうか? また答えを10進数に変更する方法を教えてください。
- 締切済み
- 数学・算数