我正在尝试以A*B
16 位定点乘法,同时保持尽可能高的精度。A
是无符号整数范围内的 16 位,B
除以 1000 并且始终介于0.001
和之间9.999
。自从我处理这样的问题以来已经有一段时间了,所以:
- 我知道我可以
A*B/1000
在移动到 32 位变量后做,然后剥离回 16 位 - 我想让它比那更快
- 我想在不移动到 32 位的情况下完成所有操作(因为我只有 16 位乘法)
有什么简单的方法可以做到这一点吗?
编辑:A
将介于 0 和 4000 之间,因此所有可能的结果也在 16 位范围内。
编辑:来自用户,在掩码中B
逐位设置,这就是为什么操作是.X.XXX
/1000