5

私はコンピューター アーキテクチャのハードウェアに取り組んでいますが、次の問題に遭遇しました。

A = 247
B = 237

1) A と B は、2 の補数形式で格納された符号付き 8 ビット整数であると仮定します。飽和演算を使用して A + B を計算します。結果は 10 進数で書き出す必要があります。あなたの作品を見せてください。
2) A と B は、2 の補数形式で格納された符号付き 8 ビット整数であると仮定します。飽和演算を使用して A - B を計算します。

さて、これらはどのように有効な質問でしょうか? 飽和演算とは何かは知っていますが、8 ビットの 2 の補数で表現できない場合、A が 247 で B が 237 であると言えるのはなぜですか?

飽和演算のポイントは、すべてのビットを極端な値に設定するオーバーフロー/アンダーフローの場合ですが、一連の質問をするのは意味がありません(これと同じ問題でさらに3つあります)指定した形式で表すことができない数値の算術演算が含まれます。

私はここで間違っていますか?

4

4 に答える 4

8

意味のある唯一の解釈は、与えられた値が問題の数の符号なしの解釈であるということです。127より大きい値は、8ビットの符号付き2の補数値の範囲外であることは明らかです。しかし、私はその質問が不十分に述べられていることに同意します。

于 2009-11-12T23:21:05.877 に答える
3

わかりませんが、「10進数237を8ビット整数に変換します。これらのビットを8ビット2の補数整数として解釈し、加算します」と質問される可能性があります。

ちょっと言ってみたいです、Cで:

char a = 237;
printf("%x %d\n",a, a);

これは、8ビット値「237」の2の補数解釈に基づいて、期待する値をコンパイルして提供します。

于 2009-11-12T23:21:32.317 に答える
1

私には間違っているように見えます。8 ビットの符号付き 2 の補数の整数は、-128 から 127 の間で指定できます。言語によっては、定数 237 または 247 を 8 ビットの符号付き 2 の補数変数に代入しようとすると、エラーが発生するはずです。

于 2009-11-12T23:13:55.547 に答える
0

問題が「A と B が 8 ビットの符号付き整数に格納されていると仮定する」ことである場合、それは理にかなっています。A = 247 を符号付き 8 ビット整数に格納すると値 -9 が生成され、B = 237 を格納すると値 -19 が生成されます。そうでなければ意味がありません。符号付き 8 ビット整数は、247 または 237 の値を持つことはできません。

于 2014-03-30T01:02:43.923 に答える