2011-12-05 7 views
1

私はここでバイナリの質問をすることができるかどうかわかりませんが、ここに行く.. 私たちは中期的にこの質問をしましたが、私たちの教授はそれに対して正解を与えていません。それは私を夢中にさせているし、最終的にはすぐに来ているので、このギャップを埋めるのが良い考えかもしれない。ありがとう!バイナリで最小の2の補数

0101 0101に追加すると、オーバーフローが発生する最小の2の補数を求めます。答えをバイナリで表現する。

私の推論: 元のバイナリ0101 0101の範囲を実際の数値に変換して1つ追加しました。それから、範囲よりも1つ多い数を私の答えとして8ビットのバイナリに変換しました。しかし、これは私に3/6のマークしかつけなかった。他に何ができるのか分かりません。どんな洞察も大いに評価されるだろう!

答えて

3

元のバイナリは正の数(0サインビット)です。オーバーフローは、符号ビットを変更する正の数を加算すると発生します。最小の数は、バイナリ表記を使用しているかを見るために容易ではないはずです。

オーバーフローなし:

0101 0101 
+ 0010 1010 
    --------- 
    0111 1111 

オーバーフロー:これは何であれば

0101 0101 
+ 0010 1011 
    --------- 
    1000 0000 

私は見当がつかないあなたの専門家が探していた(おそらくだけではなく、パターンとしてそれを見ての1000 0000から差し引くことができます。)

EDITをあなたは(上から別の何かを意味する)の例を求めているので、ここでの減算がうまくいく方法は次のとおりです。

1000 0000 (the target overflow quantity) 
- 0101 0101 (the original binary) 
    --------- 
    0010 1011 (the smallest number that will overflow when added to original) 
+0

+1です。基本的には、オーバーフローする最初の数字(「1000 000」)を計算し、その数値からどのくらい離れているかを計算します(つまり、それを減算します)。 – yshavit

+0

返事をありがとう。それは助けになった! = 3しかし、私は例を見ることができますか? ^^ – Alysha

0

この数値は10進数で85です。したがって、128-85は減算のために43

関連する問題