我正在实现一个二进制乘法算法。两个输入都是有符号十进制。它们每个都被转换成 8 位二进制数,最终结果是一个 16 位二进制数。
我想验证输入的十进制数,以便产品可以安全地适合 16 位二进制数并警告用户溢出。我怎么做?我知道我可能只需要一个 IF 语句。
谢谢。
我正在实现一个二进制乘法算法。两个输入都是有符号十进制。它们每个都被转换成 8 位二进制数,最终结果是一个 16 位二进制数。
我想验证输入的十进制数,以便产品可以安全地适合 16 位二进制数并警告用户溢出。我怎么做?我知道我可能只需要一个 IF 语句。
谢谢。
只需检查您的两个操作数是否都在范围内-128 .. 127
(即有效的 8 位有符号数字)。
如果它们是,那么结果不可能落在-16256 到+16384 的范围之外——即在16 位有符号的范围内。
对 Alnitak answer 的补充,要启用大于 127 的值(如果您不使用字节),您可以在临时long
变量中计算乘积,然后检查该中间值是否可以用短表示。最后你转换为 short 。
这给出了类似的东西:
long temp = input1*input2;
if (temp < -32768 || temp > 32767 )
// signal error
...
else
short value = (short)temp;