2.4 快速位算法
位运算符
- & 位与: 0 & 0 = 0 ; 0 & 1 = 0 ; 1 & 0 = 0 ;1 & 1 = 1 ; 同为 1 时, 结果为 1。
- | 位或: 0 | 0 = 0 ; 0 | 1 = 1 ; 1 | 0 = 1 ;1 | 1 = 1 ; 存在 1 时, 结果为 1。
- ^ 位异或: 0 & 0 = 0 ; 0 & 1 = 1 ; 1 & 0 = 1 ;1 & 1 = 0 ; 值相异时, 结果为 1。
- ~ 位反: ~ 0 = 1 ; ~ 1 = 0 ;
- « 左移:
- >> 逻辑右移:
- >» 算术右移:
位运算特性
与(&)运算
一个数n与0进行与运算,值为0,n & 0 = 0。
一个数n与-1进行与运算,值为n,n & -1 = n。
一个数n与自己进行与运算,值为n,n & n = n。
或(|)运算
一个数n与0进行或运算,值为n,n | 0 = n。
一个数n与-1进行或运算,值为-1,n | -1 = -1。
非(~)运算
对二进制的每一位都按位取反。
对于数n,n + (~n) = -1。
异或(^)运算
运算的二进位结果,相异为1,相同为0。
一个数n与0异或,值为n,n ^ 0 = n。
一个数n与-1异或,值为~n,n ^ -1 = ~n。
一个数n与自己异或,值为0,n ^ n = 0。
左移(«)和右移(»)运算
向左进行移位操作,高位丢弃,低位补 0
向右进行移位操作,对无符号数,高位补 0,对于有符号数,高位补符号位