用^交换两个变量的值
设 a=3,b=4
a = a^b
b = b^a
a = a^b
二进制 | 运算 | 结果 |
00000011 | a=3 | |
00000100 | b=4 | |
00000111 | a = a^b (a=3^4) | a=6 |
00000011 | b = b^a (b =a^b^b = 3^4^4) | b=3 |
00000100 | a = a^b (a=a^b^a^b^b = 3^4^3^4^4) | a=4 |
----------------------------------------------------------
00000010 2
<<
00000100 4 左移乘2
>>
00000010 2 右移除2
符号位不变 高位补0
----------------------------------------------------------
1111 1111 1111 1111 1111 1111 1111 0110 -10
>>>
0111 1111 1111 1111 1111 1111 1111 1011 2147483643
不管符号位 右移后最高位补0