位运算取余取模

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不变(即运算式本身为一个值,但不改变被操作对象值)

以上是关于位运算取余取模的主要内容,如果未能解决你的问题,请参考以下文章

位运算总结 取模 取余

C 逻辑运算, 移位运算 , 取整 , 取模(取余)

取模(取余)运算小结规律——用于数字加密以及破译

Math——取模运算及取余运算

Java 中的取模和取余

java中取余运算符 (%)