位运算取余取模
Posted suhang12138
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算取余取模相关的知识,希望对你有一定的参考价值。
l 取余和取模的共同点和区别
对于整数:
相同:无论取余还是取模都分两步:1)求整数商:c=a/b 2)计算模或余数:r=a-c*b
不同:取模在计算c值时,向0方向舍入(fix()函数)
取余计算c时,向负无穷方向舍入(floor()函数)
7 mod 4 = 3(商 = 1 或 2,1<2,取商=1)
-7 mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
总结:当a、b符号一致时,结果一致;当a、b符号不同时,取余结果符号与a一致,取模结果符号与b一致
基本性质:
1)若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)
2)(a % p)=(b % p)意味a≡b (% p)
l “|”逻辑或,双目运算,对应的二进制中只要其中一个对应位为1,结果对应位为1,否则结果对应位为0;
l 位逻辑运算符:
& 位逻辑与 | 位逻辑或 ^ 位逻辑异或 - 位逻辑反 >> 右移 << 左移
l 移位运算
左移运算(<<)是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算(>>)是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0。
例如,设无符号短整型变量a为0111(对应二进制数为0000000100010001),
则:a<<3 结果为0888(对应二进制数为0000100010001000),a不变(即运算式本身为一个值,但不改变被操作对象值)
以上是关于位运算取余取模的主要内容,如果未能解决你的问题,请参考以下文章