0

バイナリ乗算アルゴリズムを実装しています。両方の入力は符号付き 10 進数です。それらはそれぞれ 8 ビットの 2 進数に変換され、最終結果は 16 ビットの 2 進数になります。

製品が 16 ビットの 2 進数として安全に適合し、オーバーフローについてユーザーに警告できるように、入力 10 進数を検証したいと考えています。それ、どうやったら出来るの?必要な IF ステートメントは 1 つだけかもしれません。

ありがとう。

4

2 に答える 2

1

Alnitak answer を補完して、127 より大きい値を有効にするには (バイトを使用しない場合)、一時long変数で積を計算し、この中間値を short で表すことができるかどうかを確認します。最後に short にキャストします。

次のようなものが得られます。

long temp = input1*input2;
if (temp < -32768 || temp > 32767   ) 
   // signal error
   ...
else
   short value = (short)temp;
于 2013-10-16T20:31:02.553 に答える