异或
在平常的編程中,很少用到算法(反正我是這樣,只顧著實(shí)現(xiàn)業(yè)務(wù)需求了),所以,我的代碼總的來(lái)說(shuō)是毫無(wú)價(jià)值的。怎么才能讓自己代碼變得有點(diǎn)意思呢,今天給大家介紹個(gè)運(yùn)算符"^",異或運(yùn)算符。有的時(shí)候用點(diǎn)運(yùn)算符的小技巧,可以讓自己的代碼“蓬蓽生輝”喔!:-D
首先,我先介紹一下,什么是異或運(yùn)算符。簡(jiǎn)單點(diǎn)來(lái)說(shuō),異或就是相同為0,不同為1,它是32位二進(jìn)制數(shù)使用的運(yùn)算符,我們?cè)趯?shí)際使用中,計(jì)算的時(shí)候都是要轉(zhuǎn)換成二進(jìn)制的。下面,我用一個(gè)圖來(lái)介紹什么是異或,大家一看就明白了。
相信大家現(xiàn)在可以明白異或了吧!
下面我用一個(gè)簡(jiǎn)單的實(shí)例,通過(guò)比較,更清楚深入的了解異或。
題目:請(qǐng)把兩個(gè)整數(shù)進(jìn)行交換。
在我們初次學(xué)習(xí)Java的時(shí)候,進(jìn)行兩個(gè)數(shù)之間的交換,首先會(huì)想到使用臨時(shí)變量,于是,方案一就是采用第三方變量實(shí)現(xiàn)交換。
1 int a = 10; 2 int b = 20; 3 4 int temp = a; 5 a = b; 6 b = temp;
采用第三方變量實(shí)現(xiàn)是最簡(jiǎn)單也是最容易理解的,但是能不能不使用第三方變量呢?方案二就是通過(guò)數(shù)學(xué)上基本運(yùn)算,實(shí)現(xiàn)了交換。
1 int a = 10; 2 int b = 20; 3 4 a = a + b; //a=30 5 b = a - b; //b=10 6 a = a - b; //a=20
這個(gè)方法是不是很巧妙呢?但是!它是有缺點(diǎn)的,那就是如果a+b的值超出了int的范圍,就會(huì)有數(shù)據(jù)溢出,所以,有沒(méi)有更好的方法呢?當(dāng)然有,異或運(yùn)算符!下面方案三就是介紹異或運(yùn)算符的巧妙使用。
1 int a = 10; 2 int b = 20; 3 4 a = a ^ b; 5 b = a ^ b; //b = a ^ b ^ b = a 6 a = a ^ b; //a = a ^ b ^ a = b
第三個(gè)方法是不是很贊呢!當(dāng)然,展示給大家的只是很簡(jiǎn)單的例子,在實(shí)際應(yīng)用中,還是需要仔細(xì)加慎重的去選擇的。謝謝。
總結(jié)
- 上一篇: 波士顿动力机器人学会了后空翻和拳击?假视
- 下一篇: Rattle:数据挖掘的界面化操作