模运算%的结果符号

代码:

#include <stdio.h>
#include <stdlib.h>

void display(int, int);

int main(void) {

	// 模运算的结果取决于第一个操作数的符号
	// 如果第一个操作数是正数,得到的模也是正数
	// 如果第一个操作数是负数,得到的模也是负数

	// a % b = a - [a / b] * b
	// [x]表示对数x趋零取整
	// C99中,对整数除法规定趋零截尾

	int a, b;

	a = 9;
	b = 5;
	display(a, b);

	a = 9;
	b = -5;
	display(a, b);

	a = -9;
	b = -5;
	display(a, b);

	a = -9;
	b = 5;
	display(a, b);

	return EXIT_SUCCESS;
}

void display(int a, int b) {
	printf("%+d / %+d = %+d, %+d %% %+d = %+d\n", a, b, a / b, a, b, a % b);
}

输出:

+9 / +5 = +1, +9 % +5 = +4
+9 / -5 = -1, +9 % -5 = +4
-9 / -5 = +1, -9 % -5 = -4
-9 / +5 = -1, -9 % +5 = -4
时间: 2024-10-10 14:49:37

模运算%的结果符号的相关文章

[转]取模运算和求余运算的区别

[转]取模运算和求余运算的区别 通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算.在这里要提醒大家要十分注意当前环境下'%'运算符的具体意义,因为在有负数存在的情况下,两者的结果是不一样的. 对于整型数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余数: r = a - c*b. 通常常用的是正数之间取模或求余.下面的可以先不关心. —————————————————————

python负数除法与模运算

1.负数除法: >>> print 45/76>>> print -45/7-7 >>> print 45/-7-7 >>> print -45/-76 对于第一个示例:第一个数里包含了多少个第二数 45包含了多少个7其结果为6 对于第二个示例: 第一个数到第二个数之间的距离是多少 -45到7的距离为52  52/7=7 其结果在加上符号为-7 可以理解为 -((45+7)/7) 2.模运算 取模与求余这两个运算不能混淆,在C/C++

小手记之与运算代替模运算

等式 先抛出一个等式, X & (2n?1) == X % 2n 右边式子,也就是模运算,最后的结果为[0, 2n?1],而左边的式子,也就是与运算,可以将X的高位清掉,最后剩下的是X的[0, n)位上面的数值,这个值当然也是∈[0, 2n?1],所以左右两边是相等的. 对比 模运算经常用来做哈希,利用上面的等式,我们完全可以使用与运算来代替模运算, 好处,与运算要比模运算来得快: 限制,模数必须是2的次幂: 参考资料 http://ifeve.com/dissecting-disruptor-

Numpy 基本除法运算和模运算

基本算术运算符+.-和*隐式关联着通用函数add.subtract和multiply 在数组的除法运算中涉及三个通用函数divide.true_divide和floor_division,以及两个对应的运算符/和// 1. 数组的除法运算 import numpy as np # divide函数在整数和浮点数除法中均只保留整数部分(python3中的np.divide == np.true_divide) a = np.array([2,6,5]) b = np.array([1,2,3])

mysql中的优化, 简单的说了一下垂直分表, 水平分表(有几种模运算),读写分离.

一.mysql中的优化 where语句的优化 1.尽量避免在 where 子句中对字段进行表达式操作select id from uinfo_jifen where jifen/60 > 10000;优化后:Select id from uinfo_jifen where jifen>600000; 2.应尽量避免在where子句中对字段进行函数操作,这将导致mysql放弃使用索引 select uid from imid where datediff(create_time,'2011-11

大整数取模运算出现运算结果负数的解决方案

首先我们看个例子 <?php echo 12121212121 % 1000000; //结果为 -689767 //实际应该为12121 ?> 这里的取模运算(取余数)出现了BUG.那么需要声明一下,负数也是可以取模操作的,并不是出现负数就是不对的我们应该把这种长整数类型看成float型数据进行处理介绍一个函数float fmod ( float $x , float $y )返回除法的浮点数余数通过这个函数的运算,就可以得到原本想要的余数结果 <?php $a = floatval(

取模运算

脑子不好使,老是记不住(?_?),备忘一下. 模运算与基本四则运算有些相似,但是除法例外.其规则如下: (a + b) % p = (a % p + b % p) % p (a - b) % p = (a % p - b % p) % p (a * b) % p = (a % p * b % p) % p a ^ b % p = ((a % p)^b) % p 结合律: ((a+b) % p + c) % p = (a + (b+c) % p) % p ((a*b) % p * c)% p =

10亿次的比较--PHP”与“运算和”模“运算效率比较

在涉及到计算数字的奇偶是,一般都用到"与"运算和"模运算",那么这两种运算用PHP语言来实现的话,哪个更快呢?在比较前,我是倾向于前者的.但结果却让我很诧异.代码如下: "与"运算: <?php set_time_limit(0); $i = 1; $t1 = microtime(true); while($i < 1000000001){ $i ++ & 1; } $t2 = microtime(true); echo $t

poj 3980 取模运算

取模运算 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10931   Accepted: 6618 Description 编写一个C函数mod(int n, int m),实现取模运算% Input 输入包含多行数据 每行数据是两个整数a, b (1 <= a, b <= 32767) 数据以EOF结束 Output 于输入的每一行输出a%b Sample Input 5 3 100 2 Sample Output