位运算:
左移 "<<" 右移 ">>" 无符号右移 ">>>"
计算机里内存中数据的是以补码形式出现
5 << 2 = 20
5的补码为:
0000 0000 0000 0000 0000 0000 0000 0101
<<2
0000 0000 0000 0000 0000 0000 0001 0100
--> 20
-5 << 2
-5的补码:
1111 1111 1111 1111 1111 1111 1111 1011
<<2
1111 1111 1111 1111 1111 1111 1110 1100
--> -20
5 >> 2
0000 0000 0000 0000 0000 0000 0000 0101
>>2
0000 0000 0000 0000 0000 0000 0000 0001
--> 1
-5 >> 2
1111 1111 1111 1111 1111 1111 1111 1011
>>2
1111 1111 1111 1111 1111 1111 1111 1110
--> -2
-5 >>> 2
1111 1111 1111 1111 1111 1111 1111 1011
>>>2
0011 1111 1111 1111 1111 1111 1111 1110
--> 1073741822
左移 "<<" 右移 ">>" 无符号右移 ">>>"
计算机里内存中数据的是以补码形式出现
5 << 2 = 20
5的补码为:
0000 0000 0000 0000 0000 0000 0000 0101
<<2
0000 0000 0000 0000 0000 0000 0001 0100
--> 20
-5 << 2
-5的补码:
1111 1111 1111 1111 1111 1111 1111 1011
<<2
1111 1111 1111 1111 1111 1111 1110 1100
--> -20
5 >> 2
0000 0000 0000 0000 0000 0000 0000 0101
>>2
0000 0000 0000 0000 0000 0000 0000 0001
--> 1
-5 >> 2
1111 1111 1111 1111 1111 1111 1111 1011
>>2
1111 1111 1111 1111 1111 1111 1111 1110
--> -2
-5 >>> 2
1111 1111 1111 1111 1111 1111 1111 1011
>>>2
0011 1111 1111 1111 1111 1111 1111 1110
--> 1073741822