• 締切済み

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)を引きんじゃないんですかね?

みんなの回答

noname#215652
noname#215652
回答No.6

私も、「2進数の」、ふつうの引き算で、答が合いました。               ★ ☆                  0 2     a = 0 0 1 1 0 1 1 0 -) b = 0 0 0 0 1 1 1 0   -----------------          0 0 1 0 1 0 0 0                                ↑ ↑               ↑☆: 2-1=1               ★:0-0=0 気になる点は、☆と★の部分です。 たぶん、お解りになってられると思いますが、念のため、 まず、下から4ケタ目の「8の位」の引き算は、 0から1は引けないので、下から5桁目の「16の位」の「1」を借りてきて、「2」にします。 それで、☆の計算:2-1=1で、答の下から(右から)4桁目は「1」になります。 次に、aの下から5桁目は、☆の計算で、「1」を貸したので、「0」になります。 それで、★の計算:0-0=0で、答の下から(右から)5桁目は「0」となります。 あとは、問題は無いですね? 下から1桁目は、0-0で0 下から2桁目は、1-1で0 下から3桁目は、1-1で0 下から6桁目は、1-0で1 下から7桁目は、0-0で0 下から8桁目は、0-0で0 と計算しました。 ちなみに、いったん10進数で計算して、出た答えを2進数に直して答を出すと、 aは、32の位が1,16の位が1,4の位が1、2の位が1で他の位は0だから、 a(10)=32+16+4+2=54 bは、8の位が1、4の位が1、2の位が1で、他の位は0だから、 b(10)=8+4+2=14 a(10)-b(10)=54-14=40(10) で、 左から2番目の位は、64の位 左から1番目の位は、128の位だから、 40は満たすことが出来ず、どちらも「0」「0」 下から6桁目は32の位なので、40から32が1つ入って「1」 40-32=8 残り「8」なので、 8では16の位を満たすことが出来ないので、 下から5桁目は「0」のままで、スルーして、 下から4桁目は8の位なので、残っていた「8」を全部入れて「1」 で、残りの4の位、2の位、1の位には、もう入れる数が無いので、全て0になり、 結局、答は < 0 0 1 0 1 0 0 0 > と、一度、10進数に直しても、答は同じでした。 私は中学受験の算数の講師ですから、補数とかは解っていません・・・汗 以上の、私の解答で、解りにくいところがあれば、補足欄なりお礼欄なりで、お知らせ下さい。 ちゃんと画像を添付して説明させて頂きますので・・・(;^_^A

  • kngj1740
  • ベストアンサー率18% (197/1052)
回答No.5

引き算回路をハードウェアとして持っている計算機は皆無と言って良いです。で、常識的な答えは補数を足すとなります。純粋な数学の問題ではなくて計算機がらみの問題ですから。ちなみに補数を求めるには各ビットの01を反転させ、それに1を足します。これはビットを反転する回路と足し算回路だけで実現できます。引き算回路を別に作るよりはるかに簡単になります。(もちろんその分、制御回路は複雑になります)。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

> a-bを求めて2進数で表記しなさい だけだったら > 普通に引き算 でまったく問題ありません。 繰り下げげちょっと面倒なときがある、というくらいです。 倫理回路まで考えたら、確かに bの2の補数表現b' を使って a-b → a + b' とするのが簡単になりますが 何も条件も無しに補数表現を使うのはちょっと違うと思います。

noname#242220
noname#242220
回答No.3

2進数計算処理では直接『減算処理』は出来ません。 出来るのは『加算』のみなので『減算』の場合 は補数に変換し、上位桁を無視する事で行ってます。 最上位が『1』は補数計算のフラグ これが無いと『加算』した事に成る。 ちなみに乗算は『加算』を繰り返す。 3X2--->3+3

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

10進数で考えましょう。 2桁演算において 70-40の場合。  70 +60 --- 130 百の位は切り捨て、30となる。 引き算を足し算で演算できれば引き算の回路が要らなくなるということです。 小学校の算数で足し算はできたけど、引き算でつまずいた人がいたんじゃないかな。

  • mojya2012
  • ベストアンサー率42% (64/150)
回答No.1

2進数を論理回路(ANDとかORとかのアレ)で 演算させるには、補数を使えば足し算の回路だけで 引き算もできちゃうぞって事だと思います。 それが演算の高速化や回路のシンプルさに繋がっていきます。 例えば、自分でリレースイッチなどの電子パーツで 足し算と引き算が出来る機械を作るイメージをしてみてください。 出来れば足し算機能の機械と引き算機能の機械を別々に作るよりも、 足し算機能にちょっと工夫を加えることで 引き算も出来てしまうほうがいいと思いませんか? うろおぼえなので、自分の解釈が間違ってる部分もあるかもしれませんが、 大体、こんなところだと思います。

関連するQ&A