java中異或^的用法

今天再次撿起java基礎(chǔ),以前在校的時(shí)候很少用到取反操作。

TulipFestival_ZH-CN8467334837_1920x1080.jpg

當(dāng)然和在學(xué)校劃水有關(guān),今天看到異或位運(yùn)算符,^是異或,相同為0,不同為1,例如int x = 19^20,
19:0001 0011
20:0001 0100
可以看到二進(jìn)制進(jìn)行異或,答案是0000 0111,也就是x=7,那么在實(shí)際編寫(xiě)代碼中有什么用呢?例如下面:
a ^ a = 0;
a ^ 0 = a;
a ^ b = b ^ a;
a ^ b ^ b = a;
假如兩個(gè)數(shù)交換,最大眾的寫(xiě)法是
int a=4,b=3;
int temp = a;
a = b;
b = temp
寫(xiě)法2:
a = a + b;
b = a - b;
a = a - b;
寫(xiě)法3:
a = a ^ b; // a = 4 ^ 3, b=3;
b = a ^ b; // a = 4 ^ 3, b = 4 ^ 3 ^ 3 = 4
a = a ^ b; // a = 4 ^ 3 ^ 4 = 3, b = 4;
寫(xiě)法4:
a = (a + b) - (b = a); //或者下面這種
a = (a ^ b) ^ (b = a);
以上寫(xiě)法都是實(shí)現(xiàn)兩者的交換,在工作中第一種大眾容易被別人理解,方法2是利用減法是加法的逆運(yùn)算,方法3是利用異或操作 推薦面試或者筆試用第三種,當(dāng)然第四種也可以。異或還可以在一堆數(shù)中找相同的,時(shí)間復(fù)雜度最小,空間復(fù)雜度也最小,因?yàn)槭嵌M(jìn)制位運(yùn)算,開(kāi)銷(xiāo)最小。目前想到的就這些,以后學(xué)習(xí)到了新的 會(huì)再補(bǔ)充。

?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • WebStorm for mac是jetbrains公司旗下一款很好用的JavaScript開(kāi)發(fā)工具。被廣大中國(guó)J...
    辭令閱讀 2,348評(píng)論 2 5
  • 我還是有些小任性不愿意妥協(xié),不關(guān)防盜窗,因?yàn)樵谠缟舷胍磺宄旱年?yáng)光叫醒。我一個(gè)人住在這套小房子里,晝夜不停...
    菜同學(xué)少女閱讀 597評(píng)論 0 1
  • 玉帶河,又名隔河。一個(gè)多么優(yōu)美、多么富有詩(shī)情畫(huà)意的名字。 聽(tīng)說(shuō),你是一條大金豬拖出來(lái)的。 還聽(tīng)說(shuō),你是一位仙人挖出...
    蘭州理工大學(xué)管理員閱讀 280評(píng)論 0 0
  • 2018.4.12 4.12補(bǔ)卡 英語(yǔ)聽(tīng)力半小時(shí) 英語(yǔ)跟讀 晚上特地買(mǎi)了小蛋糕,到達(dá)幼兒園,已經(jīng)快五點(diǎn)半了,比平時(shí)...
    灸灸微笑閱讀 205評(píng)論 0 0

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