• 締切済み

2進数の計算について

01000111(2)-01101010(2)の計算を補数を用いて求める方法は 01101010を10010101に変更し1を加えて10010110に変更し  01000111 +10010110 =11011101(2)で正しいでしょうか? また答えを10進数に変更する方法を教えてください。

みんなの回答

回答No.3

負数を2の補数表現で表した8ビットの固定小数点数表現で考えた場合ですね。 その計算方法で合っていると思いますよ。 ちなみに、答えを10進数に変更するには次のようにすればよいです。 11011101(2)の2の補数 =00100010(2)+1 =00100011(2) =32+2+1 =35 答えの符号ビットは1なので-35になります。

全文を見る
すると、全ての回答が全文表示されます。
noname#180098
noname#180098
回答No.2

符号はMSBに付くという条件なら11011101で間違いありません。 10進数にするのでしたら、計算の始めで01101010を10010110にした時と逆の方法で11011101を計算すれば10進数に戻すのが楽ですよ。ただし計算結果として符号が消えていることを考慮してください。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

はい。あってます。 それぞれを符号付き8bit整数とするなら、 負の数が、 >01101010を10010101に変更し1を加えて10010110に変更 で求められるわけだよね。 11011101 の先頭(一番左)は1だから負の数。 11011100 1を引いて 00100011 NOTをとって読むと、2^5 * 1 + 2^1 * 1 + 2^0 * 1 = 35 よって求められた負の数は-35 実際元の式は71 - 106 = -35で正しいですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 2進数 計算

    2進数 計算 2進数で表記される数 a=00110110(2)、b=00001110(2)について a-bを求めて2進数で表記しなさい。という問題なんですが この問題の答えを見ると(bの補数)=11110001(2)+00000001(2)=1110010(2) 従ってa-b=00110110(2)+1110010(2)=00101000(2)   00110110 +11110010 100101000 っていうう風に出していたのですがなんでこういう解き方になるんでしょうか? 普通に引き算でa-bを00110110(2)から00001110(2)を引きんじゃないんですかね?

  • 補数と進数

    補数というものがよくわかりません。 参考書を読んだのですが、いまいち理解できませんでした…。 (0111 1110)※2(小さい2は※2と表記します)の2の補数を求めろ、という問題は、どのようにして解けばよいのでしょうか。 また2進数についてなのですが、2進数を用いて(38+18)を計算せよ、という問題があります。 これは、(3×2の1乗+8×2の0乗)+(1×2の1乗+8×2の0乗) =6+8+2+8=14. …で答えは14??と思ったのですが、答えもないのでわかりません; 全然違っていたら是非解き方を教えてください。

  • 2の補数を使った計算

    ある計算機があり、2の補数を「ビット反転して1を加算する」方法とするときに10進数の計算「100-80」を2の補数を使って計算する場合は16進数で表すと幾つと幾つの加算になるのでしょうか?? 2の補数を使うというのがよくわからないのですが・・・

  • 2進数の足し算について

    CPUは引き算を行うことができず、2の補数を用いて引き算を足し算として考えれると知りました。 そこで8bitの最上位桁を符号とした7bitの引き算-24+(-8)を計算してみたのですが 24(10進数)→0011000(2進数)→1101000(2の補数) 8(10進数)→0001000(2進数)→1111000(2の補数) 符号 7654321←bit  1 1101000 +1 1111000  X 1100000 となり、1100000の2の補数をとると 0100000(2進)→32(10進数)で答えを求められました。 そこでお聞きしたいのですが、値を足したとき(↑の例だと1100000)が求められたときにどういった条件だと1100000の2の補数をとる必要があるのでしょうか? ↑の例だとXがどの条件のときでしょうか? 質問が長くなってしまいましたがよろしくお願いします。

  • 負の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桁で考えると答えが合っている気がします.これで合っていますか?

  • 2進数の計算

    2進数の計算 10進数の0.3125を2進数に直しなさい。 答え:0.0101 これの計算方法が全く分からないのですが、どなたかご教授願います。

  • 【初心者から質問】 2進数の減算について

    学校で「アセンブラ言語」について学び始めました。 「2進数の減算」が分かりません。 ・減算は負の数の加算でおこなう。 ・負の数は2の補数であらわす。 ・補数を導き出すには「ビット反転」と「+1」する。 この3つのルールのことは何となくわかります。 では、  0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  の計算の仕方を教えていただきたいです。   0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   1101 0011  (ビット反転) +1101 0100  (+1する)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  自分でやってみましたが、この先がわかりません。 (つまり負の数を加算する部分が分からないです) この先の答えと、計算方法を教えてください。 よろしくおねがいします。

  • 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

  • 10進数からの変換なのですが・・・

    どうしてもこの598に対する問題の答えが欲しいので、 分かる方、教えてください! お願いします!! 10進数598を2進数に変換すると、((1))になる。 1に対する補数は((2))で2に対する補数は((3))である。 また8進数は((4))で、16進数は((5))である。

  • 次の2進数の減算を2の補数を用いて計算せよ。

    次の2進数の減算を2の補数を用いて計算せよ。 (1011)2 - (0101)2 お願いします。