日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

异或XOR相关用法

發(fā)布時間:2023/12/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异或XOR相关用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學習內(nèi)容:

邏輯運算異或XOR的相關(guān)知識與實際用法

1、 異或的概念與表示方法
2、 異或運算的二進制加法應用-Simulink
3、異或算法加密與解密的應用-C語言
4、異或算法交換兩個整數(shù)的應用-C語言


1 異或的概念與表示方法

數(shù)字門電路中邏輯關(guān)系有:與(AND)、或(OR)、與非(NAND)、或非(NOR)、異或(XOR)、異或非(NXOR)、非(NOT)。 其中異或表示相異為真,相同為假;即只要運算中一方為1,一方為0,則結(jié)果為1,否則為0。

  • Matlab:c=xor(a,b)
  • Simulink:

  • C語言:c=a^b
  • 真值表如下表所示:
abc
000
101
011
110
  • XOR滿足交換律和結(jié)合律:
(a xor b) xor c = a xor (b xor c); (a xor b) xor b = a; %自己是自己的逆,因為b xor b=0

2 異或運算的二進制加法應用

  • 門電路中常被用于二進制加法器上,二進制加法的結(jié)果是分為加法位進位位。需要先理解計算機中二進制加法原理,首先計算不用進位的位置,做“或”運算(加法位);然后計算進位的位置做“與”運算(進位位),將進位的結(jié)果向左移位,再和加法位相加,按遞歸下去得到最終結(jié)果。

  • 當只有兩個一位二進制相加時,可以使用半加器(按位異或),即實現(xiàn)兩個1位二進制數(shù)相加不考慮低位的進位;當有多個一位二進制數(shù)相加,就需要考慮前一位是否有進位,相當于要考慮三個變量,加數(shù)、被加數(shù)、低位的進位,稱為全加器 (兩個半加器級聯(lián))。

全加器: Simulink例子【參考其他博客,增加理解】

  • 通過全加器來模擬二進制加法原理,給出兩個二進制數(shù)A、B,Ci為外部進位輸入信號,S為輸出的和,C0為進位信號。

    根據(jù)真值表寫表達式,s和c0結(jié)果為0的不考慮。(注意:這里每一行都是一個單獨的數(shù),仍屬于1位二進制數(shù)

    ,只看s為1的四行即可,0為非,1為真。

    同理只看c0為1的四行。

  • 搭建Simulink模型如下圖:


其中生成二進制數(shù)的脈沖發(fā)生器設(shè)置如圖:

  • 仿真結(jié)果如下圖:


多位二進制數(shù)加法

  • 最低位時是兩個數(shù)的最低位相加,無需考慮進位,是半加器;其余各位都是三個數(shù)相加(加數(shù)、被加數(shù)、進位數(shù))。所以多位加法器可以通過多個上述的一位加法器級聯(lián)而來,參考網(wǎng)上4位串行加法器使用4個全加器級聯(lián)。

    對于多位二進制數(shù),我的理解是每次運算進行的位數(shù),如2位二進制最多運算2位,11+11;4位最多運算4位,1111+1111。1為高電平,0為低電平;2位加法器,00,01,10,11表示低低、低高、高低、高高。

  • Simulink模型搭建一個2位加法器,可以通過1個半加器存放每個低位的結(jié)果,低位的進位給下方高位全加器作為進位輸入,參考理解該博主的文章《MATLAB之Simulink(四)兩位二進制數(shù)加法器》,其中有錯誤,正確模型如下:

    第一個加數(shù)Scope(低位在上,高位在下):

    第二個被加數(shù)Scope:

    第三個最終Scope:


3 異或算法加密與解密的應用-C語言

加密和解密原理就是XOR是本身的逆運算,代碼理解參考下方:

  • https://blog.csdn.net/monster663/article/details/107295825
  • https://blog.csdn.net/monster663/article/details/107142732

4 異或算法交換兩個整數(shù)的應用-C語言

交換兩個整數(shù)a、b有三種方法:

  • 臨時變量c過渡;
  • 加減法 a=a+b;b=a-b;a=a-b
  • 異或法,可以避免越界缺陷,計算速度也快
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
#include <stdio.h>void main() {int a=3,b=4;a=a^b;printf("first value %d\n",a);b=b^a;printf("second value %d\n",b);a=a^b;printf("third value %d\n",a);}

總結(jié)

以上是生活随笔為你收集整理的异或XOR相关用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。