1、左移右移運算符:
二進制運算的運算符號。
"<<“和”>>"
"<<"左移:其實就是x2的移動位數的次冪
">>"右移:就是除以2的移動位數的次冪。
“>>”和“>>>”
“>>”:最高位補什么,有原有數據的最高位值而定。
如果最高位是0(代表是正數),右移后,用0補空位。
如果最高位是1(代表是負數),右移后,用1補空位。
可能你對負數右移之后用1補空位的結果為什么會等於負數除於2,我們來舉個例子:
負數:-4
原碼:1000 0100(最高位代表符號位,我們簡單的用8位來模擬)
反碼:1111 1011(反碼除了符號位不取反,其他都取反)
補碼:1111 1100 (補碼=反碼+1)
-4右移一位之后
補碼:1111 1110
反碼:1111 1101(反碼=補碼-1)
原碼:1000 0010(結果就是-2)
注意:正數的原碼、反碼、補碼都一樣
“>>>”:無論最高位是什么,右移后,都用0補。
2、~取反運算符
按位取反:二進制每一位取反,0變1,1變0。
~9的計算步驟:
轉為原碼:0 1001
計算補碼:0 1001
按位取反:1 0110
1 0110轉為原碼(注意現在它是一個負數了):
反碼:1 0101
原碼:1 1010
符號位為1是負數,即-10
~-9的計算步驟:
轉二進制:1 1001
計算補碼:1 0111
按位取反:0 1000
0 1000轉為原碼:
反碼:0 1000
原碼:0 1000(也就是8)
