これは私のコンピューターアーキテクチャの本の間違いですか?
-
19-09-2019 - |
質問
私はコンピューターアーキテクチャのためにHWに取り組んでおり、次の問題に出会いました。
A = 247
b = 2371)AとBが2つの補完形式に保存された8ビット整数に署名されていると仮定します。飽和算術を使用してA + Bを計算します。結果は10進数で記述する必要があります。あなたの仕事を見せてください。
2)AとBが2つのCOMPELEMNT形式で保存された8ビット整数に署名されていると仮定します。飽和算術を使用してA -Bを計算します。
さて、これらはどのように有効な質問ですか?飽和算術とは何かを知っていますが、8ビット2の補数番号で表現できない場合、Aは247、Bは237であると言うのはどのように有効ですか?
飽和算術のポイントはオーバーフロー/アンダーフローの場合であり、すべてのビットを極端な値に設定することができますが、一連の質問をすることは意味がありません(この同じ問題にはさらに3つあります)指定した形式で表すことができない数値の算術を含む。
私はここで間違っていますか?
解決
理にかなっている唯一の解釈は、与えられた値は 署名なし 問題の数の解釈。 127を超える値は、8ビットの署名されたTwos Complement値の範囲外です。しかし、私は質問が不十分に述べられていることに同意します。
他のヒント
わかりませんが、それはわかりません そうかもしれない 「10進数237を8ビット整数に変換します。8ビット2の補数整数としてこれらのビットを解釈して追加するようになりました」。
ちょっと言って、Cで:
char a = 237;
printf("%x %d\n",a, a);
これは、8ビット値「237」の2の補完解釈に基づいて期待される値をコンパイルし、提供するものです。
私には間違っているように見えます。 8ビットの署名された2つの補数整数は-128〜127の間になります。8ビットの署名された2つの補数変数に定数237または247を割り当てようとすると、言語に応じてエラーが発生するはずです。
問題が「AとBが8ビット署名された整数に保存されていると仮定している」場合、それは理にかなっています。 A = 247を署名した8ビット整数に保存すると、値が-9の値が得られ、B = 237を保存すると-19の値が得られます。そうでなければ、それは意味がありません。署名された8ビット整数は、247または237の値を持つことはできません。