我正在实现二进制乘法算法。两个输入都是十进制的。它们每个都被转换为8位二进制数,最终结果是16位二进制数。
我想验证输入的十进制数,以便产品可以安全地适合作为16位二进制数,并警告用户溢出。我怎么做?我知道我可能只需要一个IF语句。
感谢。
答案 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;