Java 位運(yùn)算

首先,在Java中,運(yùn)算符有以下這些:

  • 按位與 &
  • 按位或 |
  • 按位異或 ^
  • 按位非 ~
  • 左移 <<
  • 右移 >>
  • 無(wú)符號(hào)右移 >>>

好了,我們一個(gè)個(gè)來(lái),先說(shuō)簡(jiǎn)單的

1. 按位與 &

如果相對(duì)應(yīng)位都是1,則結(jié)果為1,否則為0 。

說(shuō)完了概念,我們得舉個(gè)例子

比如:6 & 3

int 類(lèi)型的 6 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 0110
int 類(lèi)型的 3 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 0011
所以運(yùn)算的結(jié)果等于:0000 0000 0000 0000 0000 0000 0000 0010 十進(jìn)制就是2

2. 按位或 |

如果相對(duì)應(yīng)位都是0,則結(jié)果為0,否則為1。

比如:8 | 5

int 類(lèi)型的 8 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 1000
int 類(lèi)型的 5 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 0101
所以運(yùn)算的結(jié)果等于:0000 0000 0000 0000 0000 0000 0000 1101 十進(jìn)制就是13

3. 按位異或 ^

如果相對(duì)應(yīng)位值相同,則結(jié)果為0,否則為1 。

比如:9 ^ 3

int 類(lèi)型的 9 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 1001
int 類(lèi)型的 3 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 0011
所以運(yùn)算的結(jié)果等于:0000 0000 0000 0000 0000 0000 0000 1010 十進(jìn)制就是10

4. 按位非 ~

翻轉(zhuǎn)操作數(shù)的每一位,即0變成1,1變成0

比如:~9

int 類(lèi)型的 9 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 1001
~9運(yùn)算結(jié)果為 1111 1111 1111 1111 1111 1111 1111 0110

5. 左移 <<

左操作數(shù)按位左移右操作數(shù)指定的位數(shù),低位補(bǔ)0。

比如:5 << 3,其中5就是左操作數(shù),3是向左移動(dòng)的位數(shù)

int 類(lèi)型的 5 二進(jìn)制為 0000 0000 0000 0000 0000 0000 0000 0101,左移三位的結(jié)果是:0000 0000 0000 0000 0000 0000 0010 1000,轉(zhuǎn)換成十進(jìn)制為:40。所以 5 << 3 的結(jié)果是 40.

6. 右移 >>

左操作數(shù)按位右移右操作數(shù)指定的位數(shù),高位補(bǔ)符號(hào),也就是如果是正數(shù),高位補(bǔ)0,負(fù)數(shù),高位補(bǔ)1。

比如:8 >> 2

int 類(lèi)型的 8 二進(jìn)制為 0000 0000 0000 0000 0000 0000 1000,右移兩位的結(jié)果是:0000 0000 0000 0000 0000 0000 0000 0010,十進(jìn)制為:2。所以 8 >> 2,結(jié)果是2。

再舉一個(gè)負(fù)數(shù)的例子:-8 >> 2

int 類(lèi)型的 -8 二進(jìn)制為 1000 0000 0000 0000 0000 0000 0000 1000,這是原碼,負(fù)數(shù)在計(jì)算機(jī)中的表現(xiàn)形式是補(bǔ)碼的形式,所以還得轉(zhuǎn)成補(bǔ)碼(關(guān)于原碼、反碼、補(bǔ)碼的知識(shí),參考我另一篇文章)。-8 的補(bǔ)碼是:1111 1111 1111 1111 1111 1111 1111 1000,右移兩位,高位補(bǔ)1的結(jié)果是:1111 1111 1111 1111 1111 1111 1111 1110。再把補(bǔ)碼轉(zhuǎn)回原碼:1000 0000 0000 0000 0000 0000 0000 0010。十進(jìn)制為 -2。所以 -8 >> 2,結(jié)果是-2。

7. 無(wú)符號(hào)右移 >>>

跟右移一樣,區(qū)別在于,無(wú)論正數(shù)還是負(fù)數(shù),高位都補(bǔ)0。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容