java中的異或問題代碼解析
java的位運(yùn)算符中有一個(gè)叫異或的運(yùn)算符,用符號(hào)(^)表示,其運(yùn)算規(guī)則是:兩個(gè)操作數(shù)的位中,相同則結(jié)果為0,不同則結(jié)果為1。下面看一個(gè)例子:
public class TestXOR{
public static void main(String[] args){
int i = 15, j = 2;
System.out.println("i ^ j = " + (i ^ j));
}
}
運(yùn)行結(jié)果是:i^j=13.
分析上面程序,i=15轉(zhuǎn)成二進(jìn)制是1111,j=2轉(zhuǎn)成二進(jìn)制是0010,根據(jù)異或的運(yùn)算規(guī)則得到的是1101,轉(zhuǎn)成十進(jìn)制就是13.
利用這個(gè)規(guī)則我們可以靈活運(yùn)用到某些算法。比如,假定有2K+1個(gè)數(shù),其中有2k個(gè)相同,需要找出不相同的那個(gè)數(shù),比如:2、3、4、4、3、5、6、6、5。我們利用異或運(yùn)算符就可以這樣寫:
public class TestXOR{
public static void main(String[] args){
int[] array = {2,3,4,4,3,5,6,6,5};
int v = 0;
for (int i = 0;i < array.length;i++) {
v ^= array[i];
}
System.out.println("只出現(xiàn)一次的數(shù)是:" + v);
}
}
結(jié)果是:只出現(xiàn)一次的數(shù)是2.
我們就是巧用異或運(yùn)算符的規(guī)則,得出一個(gè)數(shù)和0異或還是自己,一個(gè)數(shù)和自己異或是0的原理。
上述計(jì)算方式:v=2^3^4^4^3^5^6^6^5;
根據(jù)交換律以及上述規(guī)則
可以推出只出現(xiàn)一次的數(shù)(需滿足前提條件2k個(gè)相同)
總結(jié)
以上就是本文關(guān)于java中的異或問題代碼解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- java異或加密算法
- Java中位運(yùn)算(移位、位與、或、異或、非) 的簡(jiǎn)單實(shí)例
- Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串
- java使用異或?qū)崿F(xiàn)變量互換和異或加密解密示例
- Java編程實(shí)現(xiàn)對(duì)十六進(jìn)制字符串異或運(yùn)算代碼示例
- Java中使用異或語句實(shí)現(xiàn)兩個(gè)變量的互換
- Java使用異或運(yùn)算實(shí)現(xiàn)簡(jiǎn)單的加密解密算法實(shí)例代碼
- Java異或技操作給任意的文件加密原理及使用詳解
- java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算
- Java中異或的深入講解
相關(guān)文章
Springboot實(shí)現(xiàn)給前端返回一個(gè)tree結(jié)構(gòu)方法
這篇文章主要介紹了SpringBoot返回給前端一個(gè)tree結(jié)構(gòu)的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
ElasticSearch啟動(dòng)成功卻無法在瀏覽器訪問問題解決辦法
因工作的需要,要使用elasticsearch,安裝完了,啟動(dòng)也成功了之后發(fā)現(xiàn)了問題,這篇文章主要給大家介紹了關(guān)于ElasticSearch啟動(dòng)成功卻無法在瀏覽器訪問問題的解決辦法,需要的朋友可以參考下2024-10-10
使用springboot每日推送早安問候語到用戶微信的全過程
近期網(wǎng)上又出現(xiàn)一股給女朋友做微信公眾號(hào)推送的潮流,所以這篇文章主要給大家介紹了關(guān)于如何使用springboot每日推送早安問候語到用戶微信的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
SpringBoot如何在線程中獲取@Service Bean類
這篇文章主要介紹了SpringBoot如何在線程中獲取@Service Bean類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
IDEA SpringBoot項(xiàng)目配置熱更新的步驟詳解(無需每次手動(dòng)重啟服務(wù)器)
這篇文章主要介紹了IDEA SpringBoot項(xiàng)目配置熱更新的步驟,無需每次手動(dòng)重啟服務(wù)器,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Spring Cache自定義緩存key和過期時(shí)間的實(shí)現(xiàn)代碼
使用 Redis的客戶端 Spring Cache時(shí),會(huì)發(fā)現(xiàn)生成 key中會(huì)多出一個(gè)冒號(hào),而且有一個(gè)空節(jié)點(diǎn)的存在,查看源碼可知,這是因?yàn)?nbsp;Spring Cache默認(rèn)生成key的策略就是通過兩個(gè)冒號(hào)來拼接,本文給大家介紹了Spring Cache自定義緩存key和過期時(shí)間的實(shí)現(xiàn),需要的朋友可以參考下2024-05-05

