Java位運(yùn)算符使用技巧

一、判斷奇偶數(shù)
//偶數(shù)
a & 1 = 0  
//奇數(shù)
a & 1 = 1 

我們可以利用 & 運(yùn)算符的特性,來判斷二進(jìn)制數(shù)第一位是0還是1。
用if ((a & 1) == 0) 代替 if (a % 2 == 0)來判斷a是不是偶數(shù)。

二、交換兩個數(shù)
  • 臨時變量法:
int temp = a;
a = b;
b = temp;
  • 使用 ^ 位運(yùn)算符:
a ^= b;
b ^= a;
a ^= b;

需要了解一下 ^ 的幾個特性:
a ^ a = 0
a ^ 0 = a
(a ^ b) ^ c = a ^ (b ^ c)
從數(shù)學(xué)角度來分析:
第一步:a = a ^ b
第二步:b = a ^ b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a
第三步:a = a ^ b = (a ^ b) ^ b = (a ^ a) ^ b = b ^ 0 = b

三、取余

其實(shí)取余算法和上面的判斷奇偶數(shù)原理是一樣的。
比如說我們要讓a對16進(jìn)行取余,那么就可以讓 a & 15 得出來的結(jié)果就是余數(shù)。
可以看出15的二進(jìn)制表示為:
0000 0000 0000 0000 0000 0000 0000 1111
所以 a & 15 返回值就是a二進(jìn)制的最低四位,也就是

a & 15 = a % 16

使用 & 來進(jìn)行取余的算法比使用 % 效率高很多,雖然只能對2^n的數(shù)值進(jìn)行取余計(jì)算,但是在JDK源碼中也是經(jīng)常被使用到,比如說HashMap中判斷key在Hash桶中的位置。

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

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

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