0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

邏輯異或運算怎么算

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-03-01 15:11 ? 次閱讀

邏輯異或運算簡介

邏輯異或運算簡稱異或。異或,英文為exclusiveOR,縮寫成xo。異或(xor)是一個數(shù)學(xué)運算符。它應(yīng)用于邏輯運算。異或的數(shù)學(xué)符號為“⊕”,計算機符號為“xor”。其運算法則為:

a⊕b=(?a∧b)∨(a∧?b)

如果a、b兩個值不相同,則異或結(jié)果為1。如果a、b兩個值相同,異或結(jié)果為0。

異或也叫半加運算,其運算法則相當(dāng)于不帶進(jìn)位的二進(jìn)制加法:二進(jìn)制下用1表示真,0表示假,則異或的運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進(jìn)位。

邏輯異或運算怎么算

邏輯異或運算性質(zhì)

1、交換律

2、結(jié)合律(即(a^b)^c==a^(b^c))

3、對于任何數(shù)x,都有x^x=0,x^0=x

4、自反性AXORBXORB=Axor0=A

異或運算最常見于多項式除法,不過它最重要的性質(zhì)還是自反性:AXORBXORB=A,即對給定的數(shù)A,用同樣的運算因子(B)作兩次異或運算后仍得到A本身。這是一個神奇的性質(zhì),利用這個性質(zhì),可以獲得許多有趣的應(yīng)用。例如,所有的程序教科書都會向初學(xué)者指出,要交換兩個變量的值,必須要引入一個中間變量。但如果使用異或,就可以節(jié)約一個變量的存儲空間:設(shè)有A,B兩個變量,存儲的值分別為a,b,則以下三行表達(dá)式將互換他們的值表達(dá)式(值):

A=AXORB(aXORb)

B=BXORA(bXORaXORb=a)

A=AXORB(aXORbXORa=b)

類似地,該運算還可以應(yīng)用在加密,數(shù)據(jù)傳輸,校驗等等許多領(lǐng)域。

邏輯異或運算怎么算

邏輯異或運算簡稱異或。英文為exclusiveOR,或縮寫成xor。

異或(xor)是一個數(shù)學(xué)運算符。它應(yīng)用于邏輯運算。異或的數(shù)學(xué)符號為“⊕”,計算機符號為“xor”。其運算法則為:

a⊕b=(?a∧b)∨(a∧?b)

如果a、b兩個值不相同,則異或結(jié)果為1。如果a、b兩個值相同,異或結(jié)果為0。

異或邏輯

邏輯表達(dá)式:F=AB’⊕A’B((AB’⊕A’B)’=AB⊙A’B’,⊙為“同或”運算)

異或邏輯的真值表如圖1所示

邏輯異或運算怎么算

示,其邏輯符號如圖2所示。異或邏輯的關(guān)系是:當(dāng)AB不同時,輸出P=1;當(dāng)AB相同時,輸出P=0?!皑挕笔钱惢蜻\算符號,異或邏輯也是與或非邏輯的組合,其邏輯表達(dá)式為:

P=A⊕B

邏輯異或運算怎么算

由圖1可知,異或運算的規(guī)則是

0⊕0=0,0⊕1=1

1⊕0=1,1⊕1=0

口訣:相同取0,相異取1

事實上,XOR在英文里面的定義為eitherone(isone),butnotboth,也即只有一個為真(1)時,取真(1)。

邏輯異或運算應(yīng)用

1-1000放在含有1001個元素的數(shù)組中,只有唯一的一個元素值重復(fù),其它均只出現(xiàn)一次。每個數(shù)組元素只能訪問一次,設(shè)計一個算法,將它找出來;不用輔助存儲空間,能否設(shè)計一個算法實現(xiàn)?

解法一、顯然已經(jīng)有人提出了一個比較精彩的解法,將所有數(shù)加起來,減去1+2+.。.+1000的和。

這個算法已經(jīng)足夠完美了,相信出題者的標(biāo)準(zhǔn)答案也就是這個算法,唯一的問題是,如果數(shù)列過大,則可能會導(dǎo)致溢出。

解法二、異或就沒有這個問題,并且性能更好。

將所有的數(shù)全部異或,得到的結(jié)果與1^2^3^.。.^1000的結(jié)果進(jìn)行異或,得到的結(jié)果就是重復(fù)數(shù)。

但是這個算法雖然很簡單,但證明起來并不是一件容易的事情。這與異或運算的幾個特性有關(guān)系。

首先是異或運算滿足交換律、結(jié)合律。

所以,1^2^.。.^n^.。.^n^.。.^1000,無論這兩個n出現(xiàn)在什么位置,都可以轉(zhuǎn)換成為1^2^.。.^1000^(n^n)的形式。

其次,對于任何數(shù)x,都有x^x=0,x^0=x。

所以1^2^.。.^n^.。.^n^.。.^1000 = 1^2^.。.^1000^(n^n)= 1^2^.。.^1000^0 = 1^2^.。.^1000(即序列中除了n的所有數(shù)的異或)。

令,1^2^.。.^1000(序列中不包含n)的結(jié)果為T

則1^2^.。.^1000(序列中包含n)的結(jié)果就是T^n。

T^(T^n)=n。

所以,將所有的數(shù)全部異或,得到的結(jié)果與1^2^3^.。.^1000的結(jié)果進(jìn)行異或,得到的結(jié)果就是重復(fù)數(shù)。

當(dāng)然有人會說,1+2+.。.+1000的結(jié)果有高斯定律可以快速計算,但實際上1^2^.。.^1000的結(jié)果也是有規(guī)律的,算法比高斯定律還該簡單的多。

google面試題的變形:一個數(shù)組存放若干整數(shù),一個數(shù)出現(xiàn)奇數(shù)次,其余數(shù)均出現(xiàn)偶數(shù)次,找出這個出現(xiàn)奇數(shù)次的數(shù)?

解法有很多,但是最好的和上面一樣,就是把所有數(shù)異或,最后結(jié)構(gòu)就是要找的,原理同上

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 異或
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    2723
收藏 人收藏

    評論

    相關(guān)推薦

    電壓比較器的應(yīng)用--邏輯與/電路

    /topic-dianyabjq.html構(gòu)建邏輯門只不過是將二極管邏輯與一些電阻組合起來,以實現(xiàn)必需的邏輯功能。圖2給出了實現(xiàn)了邏輯“與(AND)”和
    發(fā)表于 12-23 11:49

    VHDL運算

    請問各位,在運算時,如果兩個輸入端,一個有信號,一個沒有信號,是不是就無法進(jìn)行運算了?
    發(fā)表于 12-26 16:44

    單片機教程(13)邏輯指令詳解

    的值(41H)相與,結(jié)果為(25H)=11H在知道了邏輯與指令的功能后,邏輯邏輯的功能就
    發(fā)表于 06-14 18:22

    二進(jìn)制數(shù)邏輯運算是怎么運算

    余各位不變, 則用 10001001 去相“”。 3.“非”運算“非”運算是實現(xiàn)“求反”這種邏輯的一種運算。其
    發(fā)表于 12-25 16:36

    邏輯運算指令的作用

    這類指令是對字節(jié)、字雙字的各位分別同時進(jìn)行邏輯運算的指令。有的PLC沒有字節(jié)邏輯運算指令。S7-200的取反(求反碼)指令將輸入變量中的二進(jìn)制數(shù)逐位取反,即各位由0變?yōu)?,由1變?yōu)?(見圖
    發(fā)表于 12-22 16:22

    【數(shù)字電路】關(guān)于邏輯電路的教程分析

    基本上,“”門是“”門和“非”門的組合,但真值表類似于標(biāo)準(zhǔn)“非”門,因為它的輸出通常為邏輯
    發(fā)表于 01-25 09:20

    成門邏輯符號圖/同邏輯符號圖

    成門和同門的邏輯符號圖:
    發(fā)表于 04-06 23:30 ?4312次閱讀
    <b class='flag-5'>異</b>成門<b class='flag-5'>邏輯</b>符號圖/同<b class='flag-5'>或</b>門<b class='flag-5'>邏輯</b>符號圖

    門符號,同邏輯符號,表達(dá)式及真值表

    門符號,同邏輯符號 或與同或是一對互補的邏輯運算,因為它有直觀的邏輯意義
    發(fā)表于 07-16 08:04 ?11.9w次閱讀
    同<b class='flag-5'>或</b>門符號,同<b class='flag-5'>或</b>門<b class='flag-5'>邏輯</b>符號,表達(dá)式及真值表

    EOR邏輯指令分析

    6.2 EOR邏輯指令 1.指令的編碼格式 邏輯EOR(Exclusive OR)指令將
    發(fā)表于 10-18 13:38 ?1次下載
    EOR<b class='flag-5'>邏輯</b><b class='flag-5'>異</b><b class='flag-5'>或</b>指令分析

    什么是_運算運算的作用

    ,是一個數(shù)學(xué)運算符,英文為exclusive OR,縮寫為xor,應(yīng)用于邏輯運算。的數(shù)學(xué)
    發(fā)表于 11-28 11:19 ?11.8w次閱讀
    什么是<b class='flag-5'>異</b><b class='flag-5'>或</b>_<b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>及<b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>的作用

    一文看懂C語言運算

    或是一個數(shù)學(xué)運算符它應(yīng)用于邏輯運算。本文開始介紹了運算的法則,其次介紹了
    發(fā)表于 03-01 11:52 ?4.5w次閱讀
    一文看懂C語言<b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>

    運算規(guī)則及其應(yīng)用詳解

    或是一個數(shù)學(xué)運算符應(yīng)用于邏輯運算本文開始介紹了運算的定義與
    的頭像 發(fā)表于 03-01 14:22 ?4.5w次閱讀
    <b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>規(guī)則及其應(yīng)用詳解

    運算有什么用_二進(jìn)制運算法則

    本文開始介紹了運算邏輯表達(dá)式,其次分析了運算
    的頭像 發(fā)表于 03-28 16:14 ?4.8w次閱讀
    <b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>有什么用_二進(jìn)制<b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>法則

    JAVA中的交換運算規(guī)則

    Java中的位運算符中有一個叫做運算符,符號為(^)或者 Xor
    的頭像 發(fā)表于 05-05 23:21 ?2345次閱讀
    JAVA中的<b class='flag-5'>異</b><b class='flag-5'>或</b>交換<b class='flag-5'>運算</b>規(guī)則

    運算怎么

    ,英文為exclusive OR,縮寫成xor。(eor)是一個數(shù)學(xué)運算符。它應(yīng)用于邏輯運算
    的頭像 發(fā)表于 11-19 16:00 ?3.1w次閱讀