色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

異或運算規則及其應用詳解

姚小熊27 ? 來源:網絡整理 ? 2018-03-01 14:22 ? 次閱讀

異或運算簡介

異或運算一般指異或。英文為exclusiveOR,縮寫成xor。異或(xor)是一個數學運算符。它應用于邏輯運算。異或的數學符號為“⊕”,計算機符號為“xor”。其運算法則為:

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

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

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

異或略稱為XOR、EOR、EX-OR

程序中有三種演算子:XOR、xor、⊕。

使用方法如下

z=x⊕y

z=xxory

異或運算規則

1.a⊕a=0

2.a⊕b=b⊕a

3.a⊕b⊕c=a⊕(b⊕c)=(a⊕b)⊕c;

4.d=a⊕b⊕c可以推出a=d⊕b⊕c.

5.a⊕b⊕a=b.

6.若x是二進制數0101,y是二進制數1011;

則x⊕y=1110

只有在兩個比較的位不同時其結果是1,否則結果為0

即“兩個輸入相同時為0,不同則為1”!

異或運算規則及其應用

異或運算的作用

在計算機中普遍運用,異或(xor)的邏輯符號一般用xor,也有用⊕的:

真⊕假=真

假⊕真=真

假⊕假=假

真⊕真=假

或者為:

True⊕False=True

False⊕True=True

False⊕False=False

True⊕True=False

部分計算機語言用1表示真,用0表示假,所以兩個字節按位異或如下

異或運算規則及其應用

下面是兩個二進制數值進行異或計算:

異或運算規則及其應用

現實中用的都是十進制的數值,那么我們來看一看兩個十進制數值是怎么進行異或計算:

5⊕3=?

1.進行異或計算前會把數值都轉換為二進制:

5和3轉為二進制分別為:0101、0011

異或運算規則及其應用

2.再把結果0110轉換為十進制的:6

3.所以5⊕3=6

異或運算的巧用

與其它語言不同,C語言C++語言的異或不用xor,而是用“^”,鍵入方式為Shift+6。(而其它語言的“^”一般表示乘方)

若需要交換兩個變量的值,除了通常使用的借用中間變量進行交換外,還可以利用異或,僅使用兩個變量進行交換,如:

異或運算規則及其應用

這樣就完成了a與b的交換。

綜上:同一變量與另一變量和其異或值異或等于另一個數,如(a^b)^a=b。

用例:可使用于加密算法某一環節或更多環節,使算法更復雜,不易被破解,安全性更高。

異或運算經典應用

參與運算的兩個值,如果兩個相應bit位相同,則結果為0,否則為1。

即:

0^0=0,

1^0=1,

0^1=1,

1^1=0

例如:10100001^00010001=10110000

按位異或的3個特點:

(1)0^0=0,0^1=10異或任何數=任何數

(2)1^0=1,1^1=01異或任何數-任何數取反

(3)任何數異或自己=把自己置0

按位異或的幾個常見用途:

(1)使某些特定的位翻轉

例如對數10100001的第2位和第3位翻轉,則可以將該數與00000110進行按位異或運算。

10100001^00000110=10100111

(2)實現兩個值的交換,而不必使用臨時變量。

例如交換兩個整數a=10100001,b=00000110的值,可通過下列語句實現:

a=a^b;//a=10100111

b=b^a;//b=10100001

a=a^b;//a=00000110

////////////////////////////////////////////////////////////

兩個變量交換值的方法【http://blog.sina.com.cn/s/blog_676015470100izpg.html】

第一種方法,大家會借助第三個變量來實現:

如:C=A;A=B;B=C;

這種方法需要借助第三變量來實現;

第二種方法是利用加減法實現兩個變量的交換,

如:A=A+B;B=A-B;A=A-B;

第三種方法是得用位異或運算來實現,也是效率最高的一種,在大量數據交換的時候,效率明顯優于前兩種方法,

如:A=A^B;B=A^B;A=A^B;

原理:利用一個數異或本身等于0和異或運算符合交換率。

PS:還有一篇更為深刻的文章對換值進行了探討,作者的研究精神值得學習:

http://rednaxelafx.javaeye.com/blog/134002

/////////////////////////////////////////////////////////////

(3)在匯編語言中經常用于將變量置零:

xora,a

(4)快速判斷兩個值是否相等

舉例1:判斷兩個整數a,b是否相等,則可通過下列語句實現:

return((a^b)==0)

舉例2:Linux中最初的ipv6_addr_equal()函數的實現如下:

staticinlineintipv6_addr_equal(conststructin6_addr*a1,conststructin6_addr*a2)

{

return(a1-》s6_addr32[0]==a2-》s6_addr32[0]&&

a1-》s6_addr32[1]==a2-》s6_addr32[1]&&

a1-》s6_addr32[2]==a2-》s6_addr32[2]&&

a1-》s6_addr32[3]==a2-》s6_addr32[3]);

}

可以利用按位異或實現快速比較,最新的實現已經修改為:

staticinlineintipv6_addr_equal(conststructin6_addr*a1,conststructin6_addr*a2)

{

return(((a1-》s6_addr32[0]^a2-》s6_addr32[0])|

(a1-》s6_addr32[1]^a2-》s6_addr32[1])|

(a1-》s6_addr32[2]^a2-》s6_addr32[2])|

(a1-》s6_addr32[3]^a2-》s6_addr32[3]))==0);

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 異或運算
    +關注

    關注

    0

    文章

    9

    瀏覽量

    1986
收藏 人收藏

    評論

    相關推薦

    LABVIEW中如何實現兩個十六進制數的按位運算

    求大神指點LABVIEW中如何實現兩個十六進制數的按位運算,非常感謝!
    發表于 02-13 23:00

    VHDL運算

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

    C語言總結之運算的一些特性及巧妙應用

    C語言總結之運算的一些特性及巧妙應用1.一個數和自己做的結果是0。如果需要一個常數0,x86平臺的編譯器可能會生成這樣的指令:xor
    發表于 09-11 15:05

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

    ) 01110001(56H) 00100110結果 00100000 即20H,從上面的式子能看出,兩個參與運算的值只要其中有一個位上是0,則這位的結果就是0,兩個同是1,結果才是1。理解了邏輯與的運算規則,結果自然
    發表于 06-14 18:22

    什么是_運算運算的作用

    ,是一個數學運算符,英文為exclusive OR,縮寫為xor,應用于邏輯運算的數學
    發表于 11-28 11:19 ?11.9w次閱讀
    什么是<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>的作用

    只需運算的秘密分享方案

    針對傳統基于插值多項式的秘密分享方案,需要復雜的多項式運算,當涉及的數據比較大時,運算效率特別低的問題,提出一種結合數據分塊方法以及僅需要在GF(2)上的
    發表于 01-07 12:05 ?0次下載
    只需<b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>的秘密分享方案

    一文看懂C語言運算

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

    邏輯運算怎么算

    本文開始對邏輯運算進行了介紹,介紹了邏輯運算性質,其次分析了邏輯
    的頭像 發表于 03-01 15:11 ?10.8w次閱讀
    邏輯<b class='flag-5'>異</b><b class='flag-5'>或</b><b class='flag-5'>運算</b>怎么算

    運算有什么用_二進制運算法則

    本文開始介紹了運算的邏輯表達式,其次分析了運算有什么用以及介紹了
    的頭像 發表于 03-28 16:14 ?4.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>法則

    JAVA中的交換運算規則

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

    運算怎么算

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

    邏輯的定義和應用 邏輯或與邏輯與的區別

    邏輯(XOR,Exclusive OR)是一種二進制運算,其結果取決于兩個輸入值是否不同。如果兩個輸入值相同,結果為0(假);如果兩個輸入值不同,結果為1(真)。邏輯或在計算機科
    的頭像 發表于 11-19 09:40 ?422次閱讀

    邏輯運算符在Python中的用法

    在Python編程語言中,邏輯運算符并不直接作為一個內置的操作符存在,因為Python更側重于高級編程和可讀性,并沒有直接提供
    的頭像 發表于 11-19 09:46 ?165次閱讀

    如何利用邏輯提高數據處理效率

    在計算機科學和數據處理領域,邏輯(XOR)是一種基本的位運算,它在多個方面展現出其獨特的價值。 邏輯的原理 邏輯
    的頭像 發表于 11-19 09:54 ?180次閱讀

    邏輯的常見誤區及解決方法

    用于布爾值(真/假)之間的運算,其結果是基于輸入值的邏輯差異。 按位或則用于整數二進制數的每一位進行
    的頭像 發表于 11-19 09:56 ?247次閱讀
    主站蜘蛛池模板: 黄片长版看嘛| 18禁三级黄| 石原莉奈rbd806中文字幕| 美女乱草鲍高清照片| 久久精品国产午夜伦班片| 狠狠色丁香久久婷婷综合_中| 工口肉肉彩色不遮挡| 被强J高H纯肉公交车啊| ASIAN大陆明星裸休合成PICS| 24小时日本在线观看片| 2019久久这里只精品热在线观看 | 国产成+人欧美+综合在线观看 | 翁公咬着小娇乳H边走边欢A| 强奷乱码中文字幕熟女免费| 欧美午夜精品A片一区二区HD| 免费毛片在线播放| 欧美丰满熟妇BBB久久久| 男生插女生下体| 奇米狠狠一区二区三区| 青青操久久| 热久久综合这里只有精品电影| 飘雪在线观看免费完整版| 日本黄色网站在线观看| 日韩免费一区| 香蕉精品国产高清自在自线| 性绞姿始动作动态图| 亚洲阿v天堂在线2017| 亚洲深夜在线| 中文字幕A片视频一区二区| 中文字幕在线播放视频| 99久久亚洲| 电影日本妻子| 国产精一品亚洲二区在线播放| 黑人巨摘花破女处| 久久这里只有精品2| 男女高潮又爽又黄又无遮挡 | 国产精品自在在线午夜精品| 黄梅戏mp3大全| 男生jj插入女生jj| 色多多污污下载| 亚洲 欧美无码原创区|