异或XOR相关用法

学习内容:

逻辑运算异或XOR的相关知识与实际用法

1、 异或的概念与表示方法
2、 异或运算的二进制加法应用-Simulink
3、异或算法加密与解密的应用-C语言
4、异或算法交换两个整数的应用-C语言


1 异或的概念与表示方法

数字门电路中逻辑关系有:与(AND)、或(OR)、与非(NAND)、或非(NOR)、异或(XOR)、异或非(NXOR)、非(NOT)。 其中异或表示相异为真,相同为假;即只要运算中一方为1,一方为0,则结果为1,否则为0。

  • Matlab:c=xor(a,b)
  • Simulink:
    在这里插入图片描述
    在这里插入图片描述
  • C语言:c=a^b
  • 真值表如下表所示:
abc
000
101
011
110
  • XOR满足交换律和结合律:
(a xor b) xor c = a xor (b xor c);
(a xor b) xor b = a; %自己是自己的逆,因为b xor b=0

2 异或运算的二进制加法应用

  • 门电路中常被用于二进制加法器上,二进制加法的结果是分为加法位进位位。需要先理解计算机中二进制加法原理,首先计算不用进位的位置,做“或”运算(加法位);然后计算进位的位置做“与”运算(进位位),将进位的结果向左移位,再和加法位相加,按递归下去得到最终结果。

  • 当只有两个一位二进制相加时,可以使用半加器(按位异或),即实现两个1位二进制数相加不考虑低位的进位;当有多个一位二进制数相加,就需要考虑前一位是否有进位,相当于要考虑三个变量,加数、被加数、低位的进位,称为全加器 (两个半加器级联)。

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

  • 通过全加器来模拟二进制加法原理,给出两个二进制数A、B,Ci为外部进位输入信号,S为输出的和,C0为进位信号。
    在这里插入图片描述
    根据真值表写表达式,s和c0结果为0的不考虑。(注意:这里每一行都是一个单独的数,仍属于1位二进制数
    在这里插入图片描述
    ,只看s为1的四行即可,0为非,1为真。
    在这里插入图片描述
    同理只看c0为1的四行。

  • 搭建Simulink模型如下图:

在这里插入图片描述
其中生成二进制数的脉冲发生器设置如图:
在这里插入图片描述

  • 仿真结果如下图:

在这里插入图片描述
多位二进制数加法

  • 最低位时是两个数的最低位相加,无需考虑进位,是半加器;其余各位都是三个数相加(加数、被加数、进位数)。所以多位加法器可以通过多个上述的一位加法器级联而来,参考网上4位串行加法器使用4个全加器级联。
    在这里插入图片描述
    对于多位二进制数,我的理解是每次运算进行的位数,如2位二进制最多运算2位,11+11;4位最多运算4位,1111+1111。1为高电平,0为低电平;2位加法器,00,01,10,11表示低低、低高、高低、高高。

  • Simulink模型搭建一个2位加法器,可以通过1个半加器存放每个低位的结果,低位的进位给下方高位全加器作为进位输入,参考理解该博主的文章《MATLAB之Simulink(四)两位二进制数加法器》,其中有错误,正确模型如下:
    在这里插入图片描述
    第一个加数Scope(低位在上,高位在下):
    在这里插入图片描述
    第二个被加数Scope:
    在这里插入图片描述
    第三个最终Scope:
    在这里插入图片描述


3 异或算法加密与解密的应用-C语言

加密和解密原理就是XOR是本身的逆运算,代码理解参考下方:

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

4 异或算法交换两个整数的应用-C语言

交换两个整数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);

}

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 16进制异或XOR)计算器是一个在线工具,用于对16进制数进行异或计算。异或运算是一种位运算,它将两个相应位的二进制数进行比较,相同为0,不同为1。该计算器可以帮助用户快速执行16进制异或计算,无需手动进行转换。 使用这个计算器非常简单。首先,用户需要输入两个16进制数,可以用0-9和A-F表示。然后,用户点击计算按钮,系统将自动执行异或运算并给出结果。结果将以16进制形式显示在计算器界面上。 为了说明这个计算器的使用,我们来看一个例子。假设用户输入的两个16进制数分别为A2和C4。点击计算按钮后,计算器将执行以下运算: A2 XOR C4 = 66 在这个例子中,A2和C4的二进制表示为10100010和11000100。进行异或运算后,结果为01100110,即十进制的66。计算器将显示结果66在界面上。 使用这个16进制异或计算器,用户可以快速进行异或计算,无需手动转换位数。这个工具对于需要处理16进制数的人来说是非常实用的。无论是学生还是专业人士,都可以受益于这个在线计算器的方便和准确性。 ### 回答2: 16进制 xor异或计算器是一种在线工具,用于计算16进制数之间的异或操作。 在正常的计算机运算中,异或操作是指当两个数的二进制位不同时返回1,相同时返回0。而在16进制中,数位包括0-9和A-F,对应二进制位的0000-1111。 使用16进制 xor异或计算器可以通过输入两个16进制数,直接得出它们异或的结果。计算过程非常简单,只需要将两个数的相应位进行异或,并将结果转换为16进制数即可。 举个例子,假设要计算16进制数A3和16进制数C7的异或结果。首先,将A3转换为二进制数10100011,将C7转换为二进制数11000111。然后,按位进行异或操作:1 ⊕ 1 = 0,0 ⊕ 0 = 0,1 ⊕ 0 = 1,0 ⊕ 0 = 0,0 ⊕ 0 = 0,1 ⊕ 1 = 0,1 ⊕ 0 = 1,1 ⊕ 0 = 1。最后,将得到的二进制数10101000转换为16进制数A8,即为结果。 通过16进制 xor异或计算器,在线输入A3和C7,可以直接得到结果A8。 这个工具的使用非常简单,方便快捷。它适用于需要进行16进制异或计算的场景,比如在编程、加密等领域中。无论是初学者还是专业人士,都可以通过16进制 xor异或计算器在线完成异或计算,提高工作效率。 ### 回答3: 16进制xor异或运算计算器在线是一种在计算机科学中常用的工具。它可以用于执行16进制数的异或运算。异或运算是一种逻辑运算,用于比较两个值,并返回其相异的位。异或运算的结果是一个新的16进制数,它的每一位都表示两个输入数对应位的异或结果。 通过在线的16进制xor异或计算器,我们可以将两个16进制数输入到相应的输入框中。计算器会自动执行异或运算,并在输出框中显示结果。输入的16进制数可以使用数字0-9和字母A-F来表示。计算器还可以处理不同长度的输入,使得用户可以进行不同位数的异或运算。 这个16进制xor异或计算器在线的好处是它的易用性和方便性。用户无需编写任何代码或使用复杂的计算方法,只需输入要计算的16进制数即可获得结果。计算器还清晰地显示输入和输出,方便用户检查计算结果。此外,由于在线的性质,用户可以随时在任何设备上访问这个计算器,无需安装任何软件。 综上所述,16进制xor异或计算器在线是一个便捷实用的工具。它可以帮助用户进行16进制数的异或运算,无需复杂的计算步骤。无论是学生、程序员还是数学爱好者,都可以在需要时使用这个计算器来进行16进制xor异或运算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值