相关疑难解决方法(0)

使用位移除以10?

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

math bit low-level integer-division micro-optimization

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

检查一个数字是否可以被3整除

我需要找出一个数字是否可以被3整除而不使用%,/或者*.给出的提示是使用atoi()函数.知道怎么做吗?

division modulo integer-division

37
推荐指数
8
解决办法
2万
查看次数

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万
查看次数

有没有办法在没有模数/除法运算符的情况下编写"mod 31"?

如果操作数是2的幂,则可以在没有模数运算符或除法的情况下容易地获得数字的模数.在这种情况下,下面的公式成立:x % y = (x & (y ? 1)).在许多架构中,这通常很有效.可以这样做mod 31吗?

int mod31(int a){ return a % 31; };
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation bitwise-operators modulus

8
推荐指数
3
解决办法
2850
查看次数

如何在不使用任何算术运算的情况下找到x mod 15?

假设我们得到一个无符号整数.并且不使用任何算术运算符,+ - / *或者%,我们要找到x mod 15.我们可以使用二进制位操作.

据我所知,我得到了2分.

a = a mod 15 = a mod 16 对于 a<15

让我们a = x mod 15a = x - 15k(对于一些非负k).

a = x - 16k + k......

a mod 16 = ( x mod 16 + k mod 16 ) mod 16

a mod 15 = ( x mod 16 + k mod 16 ) mod 16 …

math bit-manipulation

3
推荐指数
1
解决办法
2449
查看次数

整数除法还是浮点乘法?

如果必须计算给定int值的一小部分,请说:

int j = 78;
int i = 5* j / 4;
Run Code Online (Sandbox Code Playgroud)

这比做的更快:

int i = 1.25*j; // ?
Run Code Online (Sandbox Code Playgroud)

如果是,是否存在可用于决定使用哪个转换因子的转换因子,例如int可以在同一时间内进行多次除法一次float乘法?

编辑:我认为评论清楚表明浮点数学会慢一点,但问题是,多少?如果我需要float用$ N $ intdiv 替换每个乘法,那么$ N $将不再值得吗?

c++ optimization

3
推荐指数
1
解决办法
5272
查看次数