位运算、取余取模

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

转载于:https://www.cnblogs.com/SUHANG12138/p/11146767.html

你可能感兴趣的:(位运算、取余取模)