左移没有带符号的 右移有带符号右移跟无符号右移
一个数字左移1位, 等同于之前的数字 * 2, num<<1 等同于 num * 2
一个数字右移1位, 等同于之前的数字/ 2
注意!!!
右移: >>: 带符号右移, 左侧新位置用符号位补全, 正数补0, 负数补1。 >>>: 无符号右移, 右移之后左侧新位置用0补全, 无论该数是正数还是负数
左移 <<: 左移不区分有符号和无符号, 都是左移之后右边补上0, 最左边的符号位也直接移走。
比如系统最小, 带符号右移>>, 无符号右移>>>是不一样的
(-1) >> 1 = -1
^ 异或运算 0/1 或者1/0 就是 1 其他都是 0 --->无进位相加
n & (-n) 取出最左边的一个1
n^0 = n
n ^ n = 0
a ^ b = b ^ a
(a ^ b)^c = a^(b ^ c)
&与运算 都是1才是1
n%1都是等于0
%m 就是 &(m-1)