2012-02-29 10 views
1

私は解決しようとしています:1111 - 10010(バイナリ)長さの異なるバイナリを減算する

私はそれを解決するために2つの補完を使いたいと思います。私は答えが否定的であることを理解していますが、それを得る方法はわかりません。最初の数字(01111)の前に0を入れて、1と0の数字を同じにしました。また、答えが否定的であることを私はどのように知るでしょうか?

01101 
    + 00001 
____________ 
    01110 <-- two's compliment 

01110 
+01111 
________ 
11101  //this isn't right 
+0

見て約2の補数を学ぶことができます。 –

答えて

0

私はこの問題を解決するための最も簡単な方法は、小さなステップにそれをくちばしすることだと思います。

私の最初の仮定は、あなたが解決しようとしているということである15(1111(バイナリ)) - 18(10010(バイナリ))私はあるmethod of complementsである2の補数で減算を行う最も簡単な方法を見つける

正の15(+15 - (+18))から正の18を引いてみる代わりに、負の18を正の15(+15 +(-18))に追加します。これは同じ結果をもたらしますが、2つの補数では簡単です(数値システムに負の数がない場合はこれを行うことはできません)。

したがって、15と-18とconvert them into two's complement numbersを使用する必要があります。 18ビットは5ビットで2進数で表されるので、2の補数で-18を表すには少なくとも6 6ビットを使用する必要があります。これらのビットは使用して反転したビットに1を追加し、その後101101(0への1秒に0と1を回して)、私たちは2の補数0100​​10フリップで18を取る2の補数に-18を変換するには

binary addition

 1  (carried digits) 
    101101  (-19 (flipped 18)) 
+ 000001  (1) 
_________ 
    101110  (-18) 
それが今、-18(101110)001111

として数字の同じ量になるまで

は、我々はバイナリ(1111)に15を取ると、我々は左側にゼロを追加し、2の補数に15を変換するには、二つの中に我々は両方の数字私たちはそれらを一緒に追加することができます補完することができますbinary addition

111  (carried digits) 
    001111  (15) 
+ 101110  (-18) 
_________ 
    111101  (-3) 

これは正解である-3の2の補数を与えます(15-18 = -3)。

あなたは、私がhttp://en.wikipedia.org/wiki/Two%27s_complementを読んで示唆twos complement wiki page

関連する問題