【java提高】(17)---Java 位運算子

雨點的名字發表於2019-08-12

Java 位運算子 &、|、^、~、<<、>>

以前學過有關java的運算子,不過開發了這麼久也很少用過這個。現在由於開發需要,所以現在再來回顧整理下有關java的運算子。

主要運算子有以下:與(&)或(|)異或(^)取反(~)左移(<<)右移(>>)

一 與(&) 和 (|)

1、&(按位與)

規則:將兩邊的數轉換為二進位制位,然後運算最終值。運算規則即(兩個為真才為真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0。

舉例

4&7 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

3&5 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

2、|(按位或)

規則 將兩邊的數轉換為二進位制位,然後運算最終值。不同的是運算規則(一個為真即為真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

舉例

3|6 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

5|9 這個運算的結果是多少?

【java提高】(17)---Java 位運算子


二、異或(^) 和 取反(~)

1、異或(^)

規則 異就是不同,其運算規則為1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

舉例

3^6 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

5^9 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

2、取反(~)

規則 取反就是1為0,0為1。

舉例

~5 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

這個其實就是,就是把1變0,0變1。

注意:二進位制中,最高位是符號位 1表示負數,0表示正數。

~15 這個運算的結果是多少?

【java提高】(17)---Java 位運算子


三、左移運算(<<) 和 右移運算(>>)

1、左移運算(<<)

規則 左移就是把所有位向左移動幾位。

舉例

6 << 2 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

9 << 2 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

公式 M << n 其實可以這麼算 M << n = M * 2^n

2、右移運算(>>)

規則 這個跟左移運算大體是一樣的,但是還是有點不同的,不同點在於對於正數和負數補位的時候補的不一樣,負數補1,正數補0

舉例

12 >> 2 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

-9 >> 2 這個運算的結果是多少?

【java提高】(17)---Java 位運算子

從這裡就可以看出 正數右移補0,負數右移補1


四、負數的進製表示

我們來思考下

1、負的十進位制的轉二進位制

對於十機制的負數,如何用二進位制來表示:

思路三步曲: 1、正數二進位制 2、反碼 3、反碼+1

舉例

-1 如何轉換成二進位制?

【java提高】(17)---Java 位運算子

說明 -1在計算機裡用二進位制表達就是全1

2、負的二進位制轉十進位制

上面思路是負的十進位制轉二進位制,那麼同樣負的二進位制轉10進位制跟上面相反就可以了。

思路三步曲 1、負數的二進位制碼 2、二進位制碼-1 3、取反

舉例

1111 1101 如何轉換成十進位制?

【java提高】(17)---Java 位運算子


參考

1、Java位運算子

2、Java中正負數二進位制表示

3、Java基礎——十進位制負數轉換為二進位制、八進位制、十六進位制




只要自己變優秀了,其他的事情才會跟著好起來(上將13)

相關文章