20165306 第二周查缺補漏
阿新 • • 發佈:2018-03-19
需要 都是 正數 得出 使用 位運算 負數 byte AR
第二周查缺補漏
1.位運算符
位運算符主要針對兩個二進制數的位進行邏輯運算,所以要先把其他進制數轉化為二進制數.
例如:
- 128&129
128轉換成二進制就是10000000,129轉換成二進制就是10000001,根據與運算符的運算規律,“只有兩個位都是1,結果才是1”,可以知道結果就是10000000,即128.
- 128|129
根據或運算符的運算規律,“只要兩個位有一個是1,結果就是1”,可以知道結果就是10000001,即129.
- 15^2
15轉換成二進制為1111,2轉換成二進制為0010,根據異或的運算規律,“同假異真”,可以得出其結果為1101, 即13.
2.移位運算符
左移運算<<
- 將一個二進制位的操作數按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0.
- 左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方.
- 格式:“需要移位的數字 << 移位的次數”
例如: 3 << 2,則是將數字3左移2位,計算過程: 0011數字都朝左平移2位,最後在低位(右側)的兩個空位補零,得到的最終結果是1100,則轉換為十進制是12.
右移運算>>
- 將一個二進制位的操作數按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位(正數補零,負數補1).
- 右移一位相當於除2,右移n位相當於除以2的n次方.
- 格式:“需要移位的數字 >> 移位的次數”
例如:11 >> 2,則是將數字11右移2位,計算過程:1011把低位的最後兩個數字移出,因為該數字是正數,所以在高位補零。則得到的最終結果是 0010,轉換為十進制是2.
無符號右移>>>
無符號右移與右移的區別:進行右移>>運算的時候,如果操作數是一個正數,那麽左邊的空缺位使用0補,如果操作數是一個負數,那麽左邊的空缺位使用1補.而使用無符號右移>>>的時候,不管是正數還是負數都統一使用0補.
註:
- 在移位運算時,byte、short和char類型移位後的結果會變成int類型,對於byte、short、char和int進行移位時,規定實際移動的次數是移動次數和32的余數,例如:移位33次和移位1次得到的結果相同.
- 移動long型的數值時,規定實際移動的次數是移動次數和64的余數,例如:移動66次和移動2次得到的結果相同.
20165306 第二周查缺補漏