在各種計算機語言中,如C、C++、java等,使用按位異或的思想執(zhí)行的操作。異或邏輯的關(guān)系是:當AB不同時,輸出P=1;當AB相同時,輸出P=0。“⊕”是異或數(shù)學運算符號,異或邏輯也是與或非邏輯的組合,其邏輯表達式為:P=A⊕B。在計算機語言中,異或的符號為” ^ “。
簡介異或操作就是在各種計算機語言中,如C、C++、java等,使用按位異或的思想執(zhí)行的操作。異或操作滿足結(jié)合律和交換律,則由其性質(zhì)可知,在計算機語言中,實現(xiàn)一些功能,例如參數(shù)的交換,奇偶性的判斷等,使用異或操作就會變得非常簡單。除此之外,還可以使用計算機語言進行其他更多的應(yīng)用,接下來會對其作用做一些介紹。1
運算法則1)交換律:a ^ b = b ^ a。
2)結(jié)合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
d = a ^ b ^ c 可以推出 a = d ^ b ^ c。
3)自反性:a ^ b ^ a = b。
異或運算最常見于多項式除法,不過它最重要的性質(zhì)還是自反性:
A^B^ B=A,即對給定的數(shù)A,用同樣的運算因子(B)作兩次異或運算后仍得到A本身。這是一個神奇的性質(zhì),利用這個性質(zhì),可以獲得許多有趣的應(yīng)用。例如,所有的程序教科書都會向初學者指出,要交換兩個變量的值,必須要引入一個中間變量。但如果使用異或,就可以節(jié)約一個變量的存儲空間:
設(shè)有A,B兩個變量,存儲的值分別為a,b,則以下三行表達式將互換他們的值表達式(值):
A=A^B(a^b);
B=B^A(b^a^b=a);
A=A^B(a^b^a=b)。
類似地,該運算還可以應(yīng)用在加密,數(shù)據(jù)傳輸,校驗等等許多領(lǐng)域。
x是二進制數(shù)0101;
y是二進制數(shù)1011;
則結(jié)果為x^y=1110;
0^0=0;0^1=1;1^0=1;1^1=0;
只有在兩個比較的位不同時其結(jié)果是1,否則結(jié)果為0。
即“相同為0,不同為1”。2
|| ||
作用在各種計算機語言中,異或操作通常用在位運算中。主要有如下幾個作用:
一、交換兩個參數(shù)值例:a = 8;b = 12
a=a^b; 1000^1100=0100
b=b^a; 1100^0100=1000
a=a^b; 0100^1000=1100
則a = 12;b = 8
二、奇偶判斷^a操作就是將a中的每一位按位逐一進行異或,例如a=1010,則b=1^0^1^0=0,由此可以判斷a中為1的位數(shù)是奇數(shù)還是偶數(shù)。2
三、格雷碼(Graycode)格雷碼(Graycode)是由貝爾實驗室的FrankGray在1940年提出,用于在PCM(PusleCodeModulation)方法傳送訊號時防止出錯,并于1953年三月十七日取得美國專利。格雷碼是一個數(shù)列集合,相鄰兩數(shù)間只有一個位元改變,為無權(quán)數(shù)碼,且格雷碼的順序不是唯一的。
以二進制為0值的格雷碼為第零項,第一項改變最右邊的位元,第二項改變右起第一個為1的位元的左邊位元,第三、四項方法同第一、二項,如此反覆,即可排列出n個位元的格雷碼。
1、自然二進制碼轉(zhuǎn)換成二進制格雷碼
自然二進制碼轉(zhuǎn)換成二進制格雷碼,其法則是保留自然二進制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。
2、二進制格雷碼轉(zhuǎn)換成自然二進制碼
二進制格雷碼轉(zhuǎn)換成自然二進制碼,其法則是保留格雷碼的最高位作為自然二進制碼的最高位,而次高位自然二進制碼為高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其余各位與次高位自然二進制碼的求法相類似。1
四、奇數(shù)分頻1、奇數(shù)分頻電路:
奇數(shù)分頻電路常用的是錯位“異或”法的原理。如進行三分頻,通過待分頻時鐘的上升沿觸發(fā)計數(shù)器進行模三技術(shù),當計數(shù)器計數(shù)到鄰近值進行兩次翻轉(zhuǎn)。比如計數(shù)器在計數(shù)到1時,輸出時鐘進行翻轉(zhuǎn),計數(shù)到2時再進行翻轉(zhuǎn),即在鄰近的1和2時刻進行兩次翻轉(zhuǎn)。這樣實現(xiàn)的三分頻占空比為1/3或2/3.如果要實現(xiàn)占空比為50%的三分頻時鐘,可通過待分頻的時鐘上升沿觸發(fā)計數(shù)器和下降沿觸發(fā)計數(shù)器進行三分頻,然后將上升沿和下降沿產(chǎn)生的三分頻時鐘進行相或預(yù)算,即可得到占空比為50%的三分頻時鐘。
2、錯位“異或”法推廣:
對于實現(xiàn)占空比為50%的N倍奇數(shù)分頻,首先進行上升沿觸發(fā)的模N計數(shù),計數(shù)到某一選定值時,進行輸出時鐘翻轉(zhuǎn),然后進過(N-1)/2再次進行翻轉(zhuǎn)得到一個占空比非50%的技術(shù)分頻時鐘。再者同時進行下降沿觸發(fā)的模N計數(shù),到和上升沿觸發(fā)輸出時鐘翻轉(zhuǎn)選定值相同時,進行輸出時鐘翻轉(zhuǎn),同樣經(jīng)過(n-1)/2時,輸出時鐘再次翻轉(zhuǎn)生成占空比非50%的奇數(shù)N分頻時鐘。兩個占空比非50%的時鐘相或運算,得到占空比為50%的奇數(shù)N分頻時鐘。1
本詞條內(nèi)容貢獻者為:
王沛 - 副教授、副研究員 - 中國科學院工程熱物理研究所