負數的二進制、二進制轉十六進制、Java中的運算符

目錄

1 數字的二進制

1.1 正數

1.2 負數

2 二進制轉十六進制

3 Java中的運算符

3.1 與運算符&

3.2 或運算符|

3.3 非運算符~

3.4 異或運算符^

3.5 位移運算符<<

3.6 位移運算符>>

3.7 位移運算符>>>


1 數字的二進制

我們知道計算機只認識0和1,數字在計算機中就是以二進制表示的。這裏提到三個概念:原碼、反碼和補碼。數字的表示形式就是補碼,即我們平時在代碼中看到的所謂的某個數字的二進制表示就是說這個數字的補碼。

1.1 正數

正數的原碼、反碼和補碼都是一樣的,比如int值5的的原碼、反碼和補碼都是:

00000000 00000000 00000000 00000101

所以5在計算機中的表示也是00000000 00000000 00000000 00000101。

1.2 負數

先說3點概念:

  • 負數的原碼:按照絕對值大小轉換成的二進制數,然後最高位補1。
  • 負數的反碼:原碼除最高位,其餘位取反。
  • 負數的補碼:反碼+1。

-5的原碼爲:  10000000 00000000 00000000 00000101。

-5的反碼爲:11111111 11111111 11111111 11111010。

-5的補碼爲:11111111 11111111 11111111 11111011。

補碼11111111 11111111 11111111 11111011就是-5在計算機中的表示。

注意:負數的補碼轉換爲十進制的步驟就是把計算補碼的步驟反過來,即:先將-5的補碼-1,然後除符號位取反,最終計算即可。

2 二進制轉十六進制

四位二進制對應一位16進制,按順序求就行。

3 Java中的運算符

一般用於二進制的運算。

3.1 與運算符&

雙目雲算符。兩個位數中位都爲1,結果才爲1,否則結果爲0。

3.2 或運算符|

雙目雲算符。兩個位數中只要有一個爲1,那麼結果爲1,否則結果爲0.

3.3 非運算符~

單目雲算符。所有位取反(0取1,1取0)。

3.4 異或運算符^

雙目雲算符。兩個位數相同結果爲0,不同結果爲1。

3.5 位移運算符<<

將一個數的各二進制位全部左移N位,右補0。如10<<2,10的二進制爲0000 0000 0000 1010,結果爲0000 0000 0010 1000,即40。

3.6 位移運算符>>

將一個數的各二進制位全部右移N位,移到右邊的低位被捨棄,對於無符號數高位補0,負數高位補1。如10>>2,10的二進制爲0000 0000 0000 1010,結果爲 0000 0000 0000 0010,即爲2;如-10>>2,-10的二進制爲1111  1111  1111  0110,結果爲1111  1111 1111   1101,十進制(轉換方法見1.2)結果爲-3。

3.7 位移運算符>>>

不帶符號的將一個數的各二進制位全部右移N位,移到右邊的低位被捨棄,統一補0。如-10>>>2,-10的二進制爲1111  1111  1111  0110,,結果爲:0011  1111 1111   1101,即16381。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章