模运算

Turbo Pascal对mod的解释是这样的:
  A Mod B=A-(A div B) * B (div含义为整除)

这个定义本身很清晰,问题出在对于整除的理解上。在C/C++语言里,整除都是像0靠拢:这里的逻辑是,比如1 / 2 = 0.5,为了增加机器执行的效率,最

好的方式就是直接把小数部分去掉,得到0。这在1 / -2的时候显得不是很合适,因为仍旧偷懒把小数部分去掉,得到0。而mod运算在C/C++里面也是严格按照

上述公式执行的1 % -2 = 1

接触python之后发现,python语言里,整除都是向负无穷靠拢,这更符合数学上的定义。于是 1 / - 2 = -1, 1 % -2 = -1。python里把这种处理办法叫做所谓的

floor divide,很生动。后续的python更新中将不再采用这种方式,而是使用真正的除法,有需要时直接得到浮点的结果。地板除以//运算符的方式呈现。

时间: 2024-10-06 00:08:27

模运算的相关文章

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

等式 先抛出一个等式, 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(

模运算%的结果符号

代码: #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; di

取模运算

脑子不好使,老是记不住(?_?),备忘一下. 模运算与基本四则运算有些相似,但是除法例外.其规则如下: (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

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++

同余与模运算

发现自己还是看书少了,能从书上学到不少东西. 加减乘的模运算: #include<cstdio> using namespace std; int mul_mod(int a,int b,int n){ a %= n; b %= b; return (int)((long long)a * b % n); }///如果n本身超int,就要用高精度了 int add_mod(int a,int b,int n){ a %= n; b %= b; return (int)((a + b) % n)