工具与软件:
您好!
我们当前正在尝试将 uint64_t 除以1000 (整数除法)。 这个运算对于我们的用例需要花费很多时间、我们认为一种更快的方法是将值转换为双精度型、然后将其乘以0.001。 但是、这仍然不足以满足我们的需求、并且仍然太慢。 在研究替代方法后、我们发现可以选择用一个乘法和一个右移运算来进行除法。 基本上、我们计算出的商如下所示:
M =(2^60 +24)/1000 = 1.152.921.504.606.847 (0x4189374BC6A7F)。
然后将数字乘以:R = M * N (其中 N 是我们要除以的数字)、然后将其向右移动60:O =((2^60 +24)/1000)*(N / 2^60)。
这给我们留下了 N/1000+(24*N)/(1000*2^60),这似乎是一个很好的近似值。
以及实现方法 将两个64位无符号值相乘以得到一个128bit 无符号值、我们稍后可以在 C71 DSP TDA4上使用该值(用于提取更高和更低的部分)?
此致、
Ogi.