符号付き2の補数の減算

符号付き2の補数の減算

3 ビットの 2 の補数を使用して減算演算を実行するとします。被減数は +3、減数は -4 です。減数の 2 の補数を取得して、それを被減数に追加する必要があります。+3=011 -4=100---> 2 の補数は再び 100 になり、これらを加算すると 111 になりますが、これは正しくありません。3-(-4)=+7 になるはずですが、結果は負です。オーバーフローをどのように分析しますか? 結果が間違っているのはなぜですか?

答え1

左端のビットを使用して符号を示す場合、3 ビットの数値全体を使用することはできません。100は (正、符号なし) 4 か、実際には (負) 0 のいずれかです。

数値が「-4」になるためには、1100単に ではなく でなければなりません100。次に、3 ビットの数値があり、その数値の 1 つが負であることを認識しながら、取得した情報を使用して作業します。

私が言いたいのは、あなたが得る価値です7.111は、3 ビットの符号なし数値の場合、正確に 7 です。

3 ビットの補数関数を使用している場合、最初の桁が符号桁ではないという事実を考慮していないだけです。まず数値を見て、直接の操作に関係のない情報、つまり符号桁を破棄する必要があります。符号は、その数値で何をする必要があるかを示しますが、その数値の値の「実際の」部分ではありません。

符号付きの 3 ビット数値を使用している場合、定義上、2 ビットの加算と減算のみ実行できます。

関連情報