标签: modulo

算术溢出是否等效于模运算?

我需要在C中进行模256运算.所以我可以简单地做

unsigned char i;
i++;
Run Code Online (Sandbox Code Playgroud)

代替

int i;
i=(i+1)%256;
Run Code Online (Sandbox Code Playgroud)

c overflow modulo integer-arithmetic

25
推荐指数
4
解决办法
2375
查看次数

C中的Python式整数除法和模数

在Python和Ruby中,带符号的整数除法向负无穷大截断,有符号整数模数与第二个操作数具有相同的符号:

>>> (-41) / 3
-14
>>> (-41) % 3
1
Run Code Online (Sandbox Code Playgroud)

但是,在C和Java中,带符号的整数除法截断为0,有符号整数模数与第一个操作数的符号相同:

printf("%d\n", (-41) / 3); /* prints "-13" */
printf("%d\n", (-41) % 3); /* prints "-2" */
Run Code Online (Sandbox Code Playgroud)

在C和Python中执行相同类型的除法和模数的最简单,最有效的方法是什么?

c c++ java division modulo

24
推荐指数
2
解决办法
7912
查看次数

INT_MIN%-1是否会产生未定义的行为?

gcc SIGFPE为以下代码生成浮动代码:

#include <limits.h>
int x = -1;
int main()
{
    return INT_MIN % x;
}
Run Code Online (Sandbox Code Playgroud)

但是,我在标准中找不到此代码调用未定义或实现定义的行为的语句.据我所知,它需要返回0.这是gcc中的错误还是我错过了标准的一些特殊例外?

c gcc overflow division modulo

24
推荐指数
3
解决办法
1499
查看次数

比 % 运算符更快的可分性测试?

我注意到我的电脑上有一个奇怪的东西。*手写的可分性测试明显比%算子快。考虑最小的例子:

* AMD 锐龙 Threadripper 2990WX,GCC 9.2.0

static int divisible_ui_p(unsigned int m, unsigned int a)
{
    if (m <= a) {
        if (m == a) {
            return 1;
        }

        return 0;
    }

    m += a;

    m >>= __builtin_ctz(m);

    return divisible_ui_p(m, a);
}
Run Code Online (Sandbox Code Playgroud)

该示例受奇数a和 的限制m > 0。然而,它可以很容易地推广到所有am。代码只是将除法转换为一系列加法。

现在考虑使用以下命令编译的测试程序-std=c99 -march=native -O3

    for (unsigned int a = 1; a < 100000; a += 2) {
        for (unsigned int m …
Run Code Online (Sandbox Code Playgroud)

c math x86 modulo compiler-optimization

23
推荐指数
2
解决办法
749
查看次数


浮点模数运算

我正在尝试实现三角学的范围缩减操作.但相反,我认为对输入数据执行模数pi/2操作可能会更好.我想知道什么算法存在并且对于32位IEEE 754浮点的这种操作有效?

我必须在汇编中实现它,所以只用一条指令就不能使用fmod,除法,乘法等.我的处理器使用16位字,我实现了32位浮点加法,减法,乘法,除法,平方根,余弦和正弦.我只需要范围缩减(模数)来输入余弦和正弦值.

c floating-point binary assembly modulo

21
推荐指数
3
解决办法
5万
查看次数

C++中带负数的模数

我一直在编写以下重现关系的程序:

An = 5An-1 - 2An-2  - An-3 + An-4
Run Code Online (Sandbox Code Playgroud)

输出应该是答案模数10 ^ 9 + 7 ..我为此写了一个蛮力方法如下......

long long int t1=5, t2=9, t3=11, t4=13, sum;
while(i--)
{
    sum=((5*t4) - 2*t3 - t2 +t1)%MOD;
    t1=t2;
    t2=t3;
    t3=t4;
    t4=sum;
}
printf("%lld\n", sum);
Run Code Online (Sandbox Code Playgroud)

其中MOD= 10^9 +7 每件事似乎都是真的..但我得到了一些价值的否定答案..由于这个问题,我无法找到正确的解决方案...... Plz帮助保持正确的地方Modulus

c++ recurrence modulo

21
推荐指数
3
解决办法
3万
查看次数

Java模数是否缓慢?

ThreadLocal出于好奇,我一直在看JDK 中的实现,我发现了这个:

/**
 * Increment i modulo len.
 */
 private static int nextIndex(int i, int len) {
     return ((i + 1 < len) ? i + 1 : 0);
 }
Run Code Online (Sandbox Code Playgroud)

看起来很明显,这可以用一个简单的实现return (i + 1) % len,但我认为这些人知道他们的东西.知道为什么他们这样做了吗?

这段代码高度针对性能,使用自定义映射来保存线程局部映射,弱引用以帮助GC变得聪明等等,所以我想这是性能问题.Java模数是否缓慢?

java performance modulo

21
推荐指数
1
解决办法
4307
查看次数

C++运算符%保证

难道保证(-x) % m,在这里xm在C++中积极标准(C++ 0x中)为负,等于-(x % m)

我知道它在我知道的所有机器上都是正确的.

c++ modulo language-lawyer

20
推荐指数
2
解决办法
1252
查看次数

为什么CoffeeScript使用%%代替模数而不是标准的javascript运算符%

关于运算符CoffeeScript文档中,它表示您可以使用%%真正的数学模,但没有解释为什么这与%JavaScript中的"模运算符"不同.

更进一步说它a %% b在CoffeeScript中相当于(a % b + b) % b用JavaScript 编写,但是对于大多数简单的情况,这似乎产生了相同的结果.

javascript operators modulo coffeescript

19
推荐指数
1
解决办法
3150
查看次数