目錄
- 位運算子學習
- 一、二進位制中的原始碼、反碼、補碼
- 二、java中的位運算子
位運算子學習
一、二進位制中的原始碼、反碼、補碼
- 符號
- 有符號數
用最高位的0和1表示正數和負數,比如
0000000111111100
最 高位是0,所以該數字為正數。
- 無符號數
全部二進位制均代表數值。
-
有符號數的性質
- 二進位制的最高位是符號位:0表示正數,1表示負數。
- 正數的原碼、反碼、補碼都一樣
- 負數的反碼=它的原碼符號位不變,其他位取反(0變1,1變0)
- 負數的補碼=它的反碼+1
- 0的反碼、補碼都是0
- 在計算機運算的時候,都是以補碼的方式來運算的。
二、java中的位運算子
-
& 位運算與
-
先轉化為二進位制,然後相同位數比較。
-
兩位都為1 ,結果為1。
-
-
| 或運算子
-
先轉化為二進位制,然後相同位數比較。
-
只要有一個為1 ,結果為1。
-
-
^ 異或運算子
-
先轉化為二進位制,然後相同位數比較。
-
兩位數不相同 ,結果為1。
-
-
<< 左移符 2<<2
-
先轉化2為二進位制。10
-
左移2為,後面補0,變為1000.十進位制為8.
-
當左移的位數大於等於32的時候,要先對32求餘,再根據餘數左移。比如左移32,就和左移0位相同。
-
-
>>右移符
-
正數參考上邊
-
負數如下圖:
-
-
>>> 無符號右移
1.無腦右移就可以,不用管符號。