3

バイナリ値は2の補数形式です。

110001(-15)と101110(-18)を追加し、答えを6ビット整数で格納する必要がある場合、これはアンダーフロー/オーバーフローです。

4

3 に答える 3

2

これはオーバーフローです、あなたの教授は正しいです。割り当てられたスペースに保持できるビットをさらに格納しています(ビットが表す数が負の場合でも)。

アンダーフローとは、大きな数学にシフトすることでビットがゼロになるときです。固定小数点演算では非常に一般的です。非常に小さい数を非常に大きい数で割ると、多くの場合0になります。これはアンダーフローです。

于 2010-04-27T23:46:09.560 に答える
1

内容が-70と-90の2つのレジスタを追加し、それを3番目のレジスタに格納するための良い例があります。

Let's assume R1[8 bits] = -70 R2[8 bits] = -90 Result[9 bits] = -160, an extra bit for overflow.

この例は、以下の参照1のoverflow_signed_detectionページで説明されています。このページで説明されているルールを使用すると、例を任意の2つの符号付き10進数にスケーリングできます。

于 2011-09-23T14:43:18.423 に答える
0

編集:-33は6ビットには大きすぎることに気付いたので、結果は-33ではなく+31になり、間違いなくオーバーフローになります:)

間違いなくオーバーフローではない場合は、2つの数値を加算して、正しい結果を取得します。オーバーフローの例は、2つの負の数を加算し、結果として正の数を取得することです(またはその逆)。

たとえば、2つの正の数0x7fffffffと0x00000001を追加すると、負の数0x80000000が得られますが、これは間違いなく間違っているため、オーバーフローします。

オーバーフローとキャリーを混同しているのではないでしょうか。

于 2010-05-23T11:19:03.497 に答える