版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-異或操作

科學百科
原創(chuàng)
科學百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

在各種計算機語言中,如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)容貢獻者為:

王沛 - 副教授、副研究員 - 中國科學院工程熱物理研究所