《逻辑与计算机设计基础(原书第5版)》——2.6 异或操作和异或门

简介: 本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第2章,第2.6节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.6 异或操作和异或门

除了图2-3中所示的异或门之外,异或操作还有自己的独特性质。用符号表示的异或操作实现下列函数运算
image

如果仅有一个输入变量为1,则结果等于1。异或非又称为同或(equivalence),是对异或进行取反,可以用函数表示为:
image

当X和Y的值都等于1或者都等于0时,函数的值等于1。通过真值表或者下面的代数处理可以看出,这两个函数互为取反。
image

这些性质中的任何一个都可以利用真值表或者将运算用等效的布尔表达式代替的方法来进行验证,同时还可以看到异或运算满足交换律和结合律,即
image

这意味着异或门的两个输入端可以相互交换而不影响运算结果,而且我们可以按任意顺序计算三变量的异或运算,因此三变量或更多变量的异或运算可以不需要借助括号来表示。
两输入的异或函数可以用普通的逻辑门来实现,这需要两个非门、两个与门和一个或门。异或操作满足结合律意味着异或门可以有两个以上的输入端,但两个以上变量的异或概念将由下面介绍的奇函数来替代。因此,没有符号可以用来表示多于两个输入的异或。根据对偶性可知,异或非可以由偶函数来替代,也没有符号可以用来表示两个以上的输入。
奇函数
三变量或三变量以上的异或运算可以通过将运算符用等效的布尔表达式来替代的方法,转化成普通的布尔函数。例如,三变量的异或运算可以转化为如下的布尔表达式:
image

从布尔表达式中可以清楚地看出,当只有一个变量等于1或者所有三个变量都等于1的时候,三变量异或运算的值等于1。因此,与二变量函数只需要一个变量的值为1相比,三变量或者三变量以上的函数则需要奇数个变量的值为1。所以,多变量异或运算又被定义为奇函数(odd function)。事实上,严格说来,这才是三变量或者三变量以上运算的正确含义,“异或”这个名字只适合于二变量。
奇函数的定义可以通过将函数绘制在卡诺图上得到清晰的解释。图2-22a所示的是三变量奇函数的卡诺图。函数的4个最小项两两之间至少有两个字符不相同,因此在图上它们彼此不相邻,相互之间的海明距离为2。奇函数由4个有奇数个1的最小项所确定。四变量的情况如图2-22b所示,图中8个被1所标记的最小项构成奇函数,注意图中1方格之间的距离模式。需要说明的是,图中没有标记为1的最小项有偶数个1,组成奇函数的反函数称为偶函数(even function)。奇函数可以通过多个两输入异或门来实现,如图2-23所示。偶函数则可以通过用同或门取代输出门来获得。
image

相关文章
|
存储 监控 固态存储
硬盘对碎片整理的需求
【10月更文挑战第1天】硬盘对碎片整理的需求
317 4
|
机器学习/深度学习 PyTorch 算法框架/工具
为什么大型语言模型都在使用 SwiGLU 作为激活函数?
SwiGLU可以说是在大语言模型中最常用到的激活函数,我们本篇文章就来对他进行详细的介绍。
1480 9
|
NoSQL 网络协议 Linux
OpenOCD(二):Jim-Tcl&运行&OpenOCD项目设置
OpenOCD(二):Jim-Tcl&运行&OpenOCD项目设置
589 1
|
5月前
|
人工智能 运维 安全
如何自己开发一套ERP系统?
本文探讨了企业自建ERP系统的可行性,分析了轻量、中型和重型ERP的区别,并指出自研ERP需明确业务需求、流程逻辑及投入成本。文章建议企业在决定自研前,应先梳理清楚管理逻辑,而非盲目追求技术方案。
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
《鱼与熊掌兼得:DataWorks中AI驱动的数据脱敏与可用性平衡术》
在数字化时代,数据成为企业核心资产,驱动业务决策与创新。DataWorks作为大数据处理平台,利用AI技术进行数据脱敏,确保隐私保护的同时维持数据可用性。通过生成对抗网络(GAN)和自然语言处理,DataWorks能生成既保留特征又符合隐私要求的脱敏数据,支持机器学习模型训练。此外,建立数据映射关系和应用数据增强技术,进一步提升脱敏数据的实用性和多样性。尽管面临挑战,DataWorks正不断优化算法,结合新兴技术,实现数据隐私与价值挖掘的平衡,助力数字经济健康发展。
469 29
|
编解码 计算机视觉 异构计算
【CV大模型SAM(Segment-Anything)】如何一键分割图片中所有对象?并对不同分割对象进行保存?
【CV大模型SAM(Segment-Anything)】如何一键分割图片中所有对象?并对不同分割对象进行保存?
|
API 数据库 网络架构
深入浅出:使用Python Flask实现RESTful API
【10月更文挑战第7天】在数字化时代,掌握如何高效构建和部署RESTful API是后端开发者的必备技能。本文将引导你了解如何使用Python Flask框架快速打造一个简单而强大的RESTful服务。从基础环境搭建到API设计原则,再到实际代码示例,我们将一步步揭开Flask框架的神秘面纱,让你轻松上手,并能够自信地处理更复杂的项目。
|
Serverless 计算机视觉
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
这篇文章介绍了如何使用OpenCV库通过mask图像绘制分割对象的外接椭圆。首先,需要加载mask图像,然后使用`cv2.findContours()`寻找轮廓,接着用`cv2.fitEllipse()`拟合外接椭圆,最后用`cv2.ellipse()`绘制椭圆。文章提供了详细的代码示例,展示了从读取图像到显示结果的完整过程。
294 0
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
|
安全 Linux 网络安全
|
存储 运维 数据安全/隐私保护
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
如何高效利用阿里云Docker镜像仓库管理您的容器镜像