相关疑难解决方法(0)

使用位移除以10?

是否有可能通过使用纯位加法,减法除以10的无符号整数,也许繁衍?使用资源非常有限且速度慢的处理器.

math bit low-level integer-division micro-optimization

41
推荐指数
4
解决办法
5万
查看次数

C++快速除法/ mod乘10 ^ x

在我的程序中,我使用了很多整数除以10 ^ x和整数mod函数10.

例如:

unsigned __int64 a = 12345;
a = a / 100;
....
Run Code Online (Sandbox Code Playgroud)

要么:

unsigned __int64 a = 12345;
a = a % 1000;
....
Run Code Online (Sandbox Code Playgroud)

如果我要使用正确的位移>>,那么我将获得模式2^x,这不是我想要的.

有什么办法可以加速整数除法和mod函数的程序吗?

c++

22
推荐指数
5
解决办法
2万
查看次数

最优化的计算C模数的方法

我用C计算模数的成本最小化.假设我有一个数字x而n是将x除以的数字

当n == 65536(恰好是2 ^ 16)时:

mod = x%n(由GCC生成的11个汇编指令)或
mod = x&0xffff,等于mod = x&65535(4个汇编指令)

因此,海湾合作委员会并未对此进行优化.

在我的例子中,n不是x ^(int),而是小于2 ^ 16的最大素数,即65521

正如我在n == 2 ^ 16中所展示的那样,逐位运算可以优化计算.当n == 65521计算模数时,我可以执行哪些按位操作.

c optimization assembly

22
推荐指数
4
解决办法
2万
查看次数