Tag: 模数

为什么7%-5给出2但-7%5给-2? 这两种情况都不应该是-2吗?

请解释下面的原因,在数学上,两种情况下正确的答案是-2 : int a=7%-5; //Assigns 2 to a int a=-7%5; //Assigns -2 to a 代码在C中。

我可以依赖C中的%(modulo)运算符来表示负数吗?

使用GCC: printf(“%i \n”, -1 % (int)4); printf(“%u \n”, -1 % (unsigned int)4); 输出: -1 3 我可以跨平台依赖这种行为吗? 我应该明确定义MOD和REM宏以确保不会改变吗?

试图从模数中得到余数但有一些麻烦 – 用C表示

更新了创建的模数函数。 但是,虽然它确实编译,但在输入两个数字后,它什么都不返回。 #include int main(){ double num1, num2, num3; printf(“Enter two double numbers > “); scanf(“%lf”, &num1); scanf(“%lf”, &num2); num3 = num2; while (num3 > num1) { if (num3 > num1) { num3 = num3-num1; } else { printf(“%.4lf float modulo %.4lf is %.4lf”, num1, num2, num3); } } return 0; }

如何使用fmod并避免精度问题

我将把这个问题归结为最简单的forms: 让我们以0.05的步长从[0 .. 5.0]迭代,并且每0.25个乘数打印出’X’。 for(double d=0.0; d<=5.0; d+=0.05) { if(fmod(d,0.25) is equal 0) print 'X'; } 这当然不起作用,因为d将是[0,0.05000000001,0.100000000002,…]导致fmod()失败。 极端的例子是当d=1.999999999998和fmod(d,0.25) = 1 。 如何解决这个问题? 这是一个可编辑的在线示例。

带有无符号字符的模数运算符

试图让一些代码工作,模数不想做我想做的事……这意味着我错了。 我有unsigned char ,我正在尝试分隔小时/分钟/秒,所以我可以在Ascii的屏幕上显示它们。 变量secs是unsigned int 。 其他一切都是unsigned char 。 我希望结果在unsigned char以免浪费内存。 在嵌入式环境中工作。 任何人都在关注代码片段并告诉我我做错了什么? hours = secs/3600.0; minutes =(secs/60.0)-(hours*3600); seconds =secs-(hours*3600)-(minutes*60); sec_ones =(unsigned char)((seconds%10)); sec_tens =(unsigned char)((seconds-sec_ones)%100); min_ones =(unsigned char)(minutes%10); min_tens =(unsigned char)((minutes-min_ones)%100); hrs_ones =(unsigned char)(hours%10); hrs_tens =(unsigned char)((hours-hrs_ones)%100);

C / C ++大数计算

我正在尝试在C程序中计算以下数字: result = (3 * pow(2,500000000) – 2 ) % 1000000000 2的力量是大到正确处理的方式=>我的印象是我可以使用模数在许多步骤中拆分计算以减小结果大小。 有人有这样做的策略吗? 还有其他想法吗? 提前完成 马努

是否可以使用按位运算符和受限运算符重写模数(2 ^ n – 1)

对于unsigned int x,是否可以仅使用以下运算符(加上没有循环,分支或函数调用)来计算x%255(或者通常为2 ^ n – 1)? ! , ~ , & , ^ , | , + , << , >> 。

高效的Modulo 3操作?

可能重复: 快速模3或除法算法? 每个人都知道模运算可能是性能上的一个巨大缺点。 有没有人知道x%3操作的好选择? 我知道x%2存在一个,但我真的需要一个模3,因为我想在for循环中在三个缓冲区之间交替。 谢谢!

C中的模运算有哪些规则?

在早期的课程中,我被教导n % d = r并将其视为n = d*q + r ,其中d是除数, q是商, r是余数(注意余数永远不会是消极的)。 所以例如, -111 mod 11是10 ,因为-111 = -11*-11 + 10 (而不是-111 = -11*10 -1 ,看看这将给我们一个负余数)。 但是,当打印-111 % 11的结果时,结果为-1而不是10 。 为什么? 这在技术上是不是错了?

高效(循环)算法计算模25?

我有一个代码,我在其中计算x%25。x总是取正值但其动态范围很大。 我发现这个计算轴%25的特殊代码片段需要大周期。 我需要优化它。 由于表可能存在大的内存大小,因此排除了预先计算的查找表。 作为第二种方法我编码下面的片段(C代码) – mod(a, b) { int r = a; while(r >= b) { r = r – b; } return r; } 1.)如何针对周期进一步优化此代码(将其压缩到最大值)? 2.)是否有任何完全不同的优化方式来实现x%25(我知道它不是一个常见的操作,但仍然,寻找人们可能在他们的经验中使用的聪明输入,这可能会让我感到厌烦。)。 谢谢。 -广告 编辑: 我认为在C中使用本机模运算符%,内部使用除法运算(/),这对我正在使用的处理器来说代价很高。(没有div指令)。 因此,尝试查看自定义实现是否可以使用%运算符击败固有计算。 -广告