Java中的位移運算

首先說一下二進制:計算機都是以二進制方式進行運算的,即 0 和 1(分別表示通電和斷電,也叫高電平和低電平)。

一個字節由8個bit構成,即: 1字節 = 8bit3d

上圖中的灰色部分即爲符號位

bit的最高位爲符號位,0表示正數,1表示負數。code

下面看一下二進制的原碼、反碼和補碼。cdn

  1. 二進制的最高位是符號位,0表示正數,1表示負數
  2. 正數的原碼、反碼和補碼都同樣。
  3. 負數的反碼:符號位不變,其他位取反。
  4. 負數的補碼:反碼 + 1
  5. 0的反碼和補碼都是0。
  6. Java中沒有無符號數。
  7. 計算機都是以補碼的方式進行運算的。

Java中的四個運算符:&|^~

  1. 按位與&: 兩位全位1,則結果爲1.
  2. 按位或| : 兩位有一個爲1,則結果爲1.
  3. 按位異或 ^ : 兩位一個爲0,一個爲1,則結果爲1.
  4. 按位取反~ : 0->1, 1->0

位移運算符:>>、>>>、<<

  1. 算術左移<<:低位溢出,符號位不變,並用符號位補溢出的高位(正數用0補充,負數用1補充)。
  2. 算術右移>>:符號位不變,低位補0
  3. 邏輯右移>>>:低位溢出,高位補0

注:左側爲高位,右側爲低位blog

相關文章
相關標籤/搜索