1. 程式人生 > >20165306 第二周查缺補漏

20165306 第二周查缺補漏

需要 都是 正數 得出 使用 位運算 負數 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 第二周查缺補漏