java位运算
&:按位与,两个都为1才为1
| :按位或,两个都为0才为0
^:按位异或,两个不同才为1 注意和按位或的区别,"1|1=1"而1^1=0
~:按位取反
>>:右移,相当于取整除,右移一位相当于除以2,右移n位相当于除以2的n次方。整体右移,高位空出来的用符号数字(正数0,负数1)补齐
<<:左移,相当于乘以2
>>>:无符号右移,意思是,不管符号,不管正负,高位补0。整体右移,高位补0
判断奇数偶数
(n & 1) == 1 奇数 n%2 == 1
(n & 1) == 0 偶数 n%2 == 0
a%b 如果b是2的n次方,用位运算 a&(b-1)
位运算要比普通的乘除快很多,性能好。编程时可以注意这一点
好文:https://www.cnblogs.com/zhengtao/articles/1916751.html
原码,反码,补码: https://www.cnblogs.com/yinzhengjie/p/8666354.html
计算机存储,不论正负,都用的是补码