0

我正在实现一个二进制乘法算法。两个输入都是有符号十进制。它们每个都被转换成 8 位二进制数,最终结果是一个 16 位二进制数。

我想验证输入的十进制数,以便产品可以安全地适合 16 位二进制数并警告用户溢出。我怎么做?我知道我可能只需要一个 IF 语句。

谢谢。

4

2 回答 2

3

只需检查您的两个操作数是否都在范围内-128 .. 127(即有效的 8 位有符号数字)。

如果它们是,那么结果不可能落在-16256 到+16384 的范围之外——即在16 位有符号的范围内。

于 2013-10-16T20:02:21.753 回答
1

对 Alnitak answer 的补充,要启用大于 127 的值(如果您不使用字节),您可以在临时long变量中计算乘积,然后检查该中间值是否可以用短表示。最后你转换为 short 。

这给出了类似的东西:

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