一 前言
小伙伴堵未,你看代碼的源碼了嗎?就比如HashMap的源碼盏触,我想工作幾年的都應(yīng)該看過(guò)渗蟹,但里面涉及的二進(jìn)制的基礎(chǔ)知識(shí)你真的懂嗎? 比如與運(yùn)算赞辩,或運(yùn)算雌芽,非運(yùn)算,& | 這東西辨嗽,計(jì)算時(shí)千萬(wàn)別說(shuō)他是邏輯運(yùn)算符世落。
二 運(yùn)算符
與運(yùn)算符(&)
預(yù)算規(guī)則:
0&0=0;0&1=0糟需;1&0=0屉佳;1&1=1
復(fù)制代碼
即:兩個(gè)同時(shí)為1来破,結(jié)果為1,否則為0
例如:3&5
十進(jìn)制3轉(zhuǎn)為二進(jìn)制的3:0000 0011
十進(jìn)制5轉(zhuǎn)為二進(jìn)制的5:0000 0101
------------------------結(jié)果:0000 0001 ->轉(zhuǎn)為十進(jìn)制:1
即:3&5 = 1
與運(yùn)算符忘古,由于二進(jìn)制上如果兩個(gè)有一個(gè)不是1 那么就歸零徘禁,所以他就可以有效的在兩個(gè)數(shù)值運(yùn)算后降低除數(shù)的值,源碼中是有這么干的髓堪。
或運(yùn)算(|)
運(yùn)算規(guī)則:
0|0=0送朱; 0|1=1; 1|0=1干旁; 1|1=1驶沼;
復(fù)制代碼
即 :參加運(yùn)算的兩個(gè)對(duì)象,一個(gè)為1争群,其值為1回怜。
例如:3|5 即 00000011 | 0000 0101 = 00000111,因此换薄,3|5=7玉雾。
異或運(yùn)算符(^)
運(yùn)算規(guī)則:
0^0=0; 0^1=1轻要; 1^0=1复旬; 1^1=0;
復(fù)制代碼
即:參加運(yùn)算的兩個(gè)對(duì)象冲泥,如果兩個(gè)位為“異”(值不同)驹碍,則該位結(jié)果為1,否則為0凡恍。
例如:3^5 = 0000 0011 | 0000 0101 =0000 0110志秃,因此,3^5 = 6
三 結(jié)語(yǔ)
使用運(yùn)算符可以增加算法的處理速度嚼酝,但是在平時(shí)開(kāi)發(fā)中還是很少看到的浮还,在底層算法中應(yīng)用就十分廣泛了,了解他們之后才能更好的看源碼哦小伙伴
作者:樂(lè)樂(lè)plus
鏈接:https://juejin.cn/post/6962731324679389198
來(lái)源:掘金
著作權(quán)歸作者所有革半。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)碑定,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處流码。