8x8位乘法的最大范围

时间:2013-10-16 19:54:05

标签: java

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

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

感谢。

2 个答案:

答案 0 :(得分:3)

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

如果是,那么结果不可能超出-16256到+16384的范围 - 即在16位有符号范围内。

答案 1 :(得分:1)

Alnitak答案的补充,要启用大于127的值(如果您不使用字节),您可以在临时long变量中计算产品,然后检查此中间值是否可以用短表示。最后,你投简了。

其中包括:

long temp = input1*input2;
if (temp < -32768 || temp > 32767   ) 
   // signal error
   ...
else
   short value = (short)temp;