如何理解「异或(XOR)」运算在计算机科学中的重要性

news2024/11/25 14:31:39

前言

在学逻辑学的时候,基本的逻辑运算是非、与、或,且并没有得到特别的强调,而且事实上异或可以由这三个逻辑运算符表出。可是在计算机领域,异或似乎处于与非、与、或并列的关系,例如 C 语言的位运算符中就有专门的异或运算符:^。
一直不清楚是什么原因使异或在计算机领域获得了这种重要性,是来源于门电路的设计呢还是来源于代数方面的某些性质?

异或是一个有趣而又重要的概念,首先,它是一种运算(Operation),其次,它隐藏在自然和生活的秩序中,很多人不了解它的含义和价值。

先看一个小例子:

小时候我们都玩过“找不同”游戏,例如下面的两张图片,你能找出几个不同的地方?

在这里插入图片描述
我相信你能找出很多不同之处,比如墙上的钟表、图画、老奶奶头发上的发簪等等。

这种在两个图片中发现不同或者“差异”的过程,就是异或运算,当找到了所有的差异,再也找不出新的差异时,异或运算

就计算完成。

异或运算的作用就是帮我们从两堆相似的信息中,发现一些新的信息。因为相同的信息往往是已知的旧信息,而不同的信息是未知的新信息,这是一个信息增量的过程。

这个信息增量有什么用呢?

太有用了,对大部分生物来说,这些新信息甚至是性命攸关的信息。

自然中的异或计算

除了我们人类能进行异或计算,其实动物也可以,比如这只蝴蝶 。
在这里插入图片描述
小时候徒手抓蝴蝶的诀窍是什么?当然不是冲过去乱抓,要蹑手蹑脚慢慢走近,当罪恶之手一点点靠近翅膀的时候,猛的一下捏住……可为什么慢慢走近是有效的,快速跑过去就把蝴蝶吓跑了?这是因为动物的视觉依靠异或运算来发现运动物体。对于不动的物体比如建筑,或运动很慢的物体比如云彩,因为变化的差异太小,大脑无法将其从背景里分离,会自动化的进行忽略。对于快速运动的物体,比如飞来的鸟,大脑发现他和背景有明显的变化差异,认为这是潜在威胁,会自动化的关注,并快速的逃离。

在这里插入图片描述
小孩要是快速接近蝴蝶,会被蝴蝶的视觉异或算法发现,引起高度注意和警觉。而缓慢的靠近蝴蝶则伪装成了自然背景,成功的欺骗了蝴蝶。当然实际算法比这个复杂,可以近似的说是一种异或运算。所以异或运算对动物性命攸关,它们要时刻比较周围的环境,一般来说,静止的是安全的,运动的很可能是危险的,是需要高度警觉的。当然这一点也会被更聪明的捕食者利用。除了自然生物,异或运算在社会生活中还有哪些用途?在信息科学领域,到处可以看到异或运算。天文学家
在这里插入图片描述
在这里插入图片描述
找到了吗,是不是很难?

反正我没找到,在没有计算机之前,可以想像天文学家找移动天体有多难。

但是有了计算机,我们可以对两个图片做异或运算,把两张照片中相同的数据删除,只留下不同的数据,我们就得到处理后的两张照片。
在这里插入图片描述
在这里插入图片描述
我们很快就要找的了新信息,发现了移动的谷神星。
在这里插入图片描述
用维恩图可以演示异或运算的过程
在这里插入图片描述
异或运算还可以用来压缩数据

我们知道,视频文件是由很多图片帧组成的,相邻的帧之间有很多重复的数据,我们可以用异或把这些冗余的数据去除,只留下帧和帧之间不同的数据。
在这里插入图片描述
去掉冗余数据后,图片帧里的数据就减少了很多
在这里插入图片描述
异或运算的用途非常多,例如在加密算法、数字电路、人工神经网络中都有异或的身影,这里就不再一一列举,相信这几个例子已经足够大家理解异或

的含义和价值。

总结

异或其实就是找不同。异或运算在自然中随处可见,对动物来说,异或能提供性命攸关的信息。人们利用异或的运算特性,在重复数据中去除冗余信息,实现信息增量和数据压缩。
在信息领域的硬件、软件设计中,异或是不可或缺的存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pmp考试需要注意哪些?

注意的事情还是蛮多的,所以这里总结一个关于考试注意的点 先来分享一些总结的考试经验: 1、规划好时间:答题时间、填答题卡时间、检查时间,一般来说一道题答题时间和填答题卡的时间最好在一分钟左右,个别的题不能超过…

8.0、Linux-账号管理学习

8.0、Linux-账号管理学习 账号管理 - 简介 Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统的用户,都必须首先向系统的管理员申请一个账号,然后以这个账号的身份进入系统; 用户的账号一方面可以帮助系统管理员对使…

第一次设计产品logo需要注意的5点细节

对于每一个公司企业/产品来说,logo不仅是公司品牌的代表,也是影响公司运营和宣传的关键因素。为了充分发挥公司标志的作用,在企业成立之初就要把企业标志的设计作为一项重要工作来抓,以保证标志最终发挥积极作用。为了使标志设计符…

useEffect和useLayoutEffect的区别

使用方式 这两个函数的使用方式其实非常简单,他们都接受一个函数一个数组,只有在数组里面的值改变的情况下才会再次执行 effect。 差异 useEffect 是异步执行的,而useLayoutEffect是同步执行的。useEffect 的执行时机是浏览器完成渲染之后&…

修复被删除的数据库表

1.问题来源 有一天领导让我对比生产数据库表和测试数据库表,要确保表结构,字段类型一致。于是我导出测试环境数据库表的DDL,在导出表的时候有blob和clob的表报错,于是我就想把它给剔除再导出,就这样数据库表被我删掉了…

c++调python踩坑日志

目录 import_array();报错 矩阵互相转换 #include numpy相关vs2019配置 import_array();报错 参考:https://blog.csdn.net/weixin_40232401/article/details/106944336#:~:text%E5%9C%A8,import_array%20%28%29%E5%87%BA%E7%8E%B0%E6%8A%A5%E9%94%99%EF%BC%8C%E6…

renix如何查看时延和抖动和丢包——网络测试仪实操

目录 查看时延和抖动​ 一、预约测试资源 ​ 二、新建流​ 三、查看时延和抖动​ 查看丢包​ 一、预约端口​ 二、创建Raw流​ 三、如何查看流量的实时丢包个数和丢包比例​ 查看时延和抖动​ 一、预约测试资源 ​ 打开Renix软件,连接机箱, 预约端口​ 二…

课题-基于安卓androidstudio的团购app

一、课题介绍 客户端: 1:注册登录:用户使用注册的账号密码进行登录; 2:查看商品:用户可以查看发布的商品信息; 3:分类查看:用户可以通过分类的查看商品信息;…

MySQL索引的数据结构

索引的数据结构 本专栏学习内容来自尚硅谷宋红康老师的视频 有兴趣的小伙伴可以点击视频地址观看 1. 为什么要使用索引? 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比去图书馆找书,或者新华字典里找字,相当于一个目…

SQL用法详解

1.SQL语言是什么?有什么作用?SQL:结构化查询语言,用于操作数据库,通用于绝大多数的数据库软件2.SQL的特征大小写不敏感需以;号结尾支持单行、多行注释3操作数据库的SQL语言基于功能可以划分为4类:数据定义:DDL ( Data Definition Language)&#xff1a…

校验、异常处理

前端校验完后,后端需要再做一次校验 JSR303 定义了数据校验的标准 使用步骤 为Bean标识注解,并自定义错误提示 import javax.validation.constraints自定义规则:一个小写或大写字母 Email、Future、NotBlank、Size 等 不推荐使用NotEmp…

Linux下命令(2)

Linux下命令(2) 1. 解压缩命令 Linux 下最常用的打包程序是 tar 命令, 使用 tar 打出来的包我们常称为 tar 包, tar包文件的命令通常都是以.tar 结尾的,生成 tar 包后,就可以用其它的程序来进行压缩了。   功能: ta…

Python程序的构成

1.开始学习图形化程序设计 >>> import turtle #导入turtle模块 >>> turtle.showturtle() #显示箭头 >>> turtle.write("文字") #写字符串 >>> turtle.forward(300) #前进300像素 >>> turtle.c…

基于C++的AGV机器人无线控制实现

AGV系统概述 AGV原理 AGV行走控制系统由控制面板、导向传感器、方向电位器、状态指示灯、避障传感器、光电控制信号传感器、驱动单元、导引磁条、电源组成。 AGV的导引(Guidance)是指根据AGV导向传感器(Navigation)所得到的位置…

Blender如何打开IFC数据?

Blender如何打开IFC数据安装blenderbimIFC介绍下载和安装BlenderBIM插件Blender打开IFC数据对于一个外行人,当我想查看IFC数据的呈现形式时,但是我又没有Revit软件,那么我想到了Blender,网上查了只需要安装BlenderBIM插件&#xf…

表单验证[用户名、邮箱、密码、重复密码]

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>表单验证</title> <link rel"stylesheet" href"form.css"> <!-- 引入样式 --> &l…

C++语法3——if switch break continue的定义及用法

接上节 循环语句 这一节写的是判断语句 if else语句 基本语法&#xff1a; 第一种&#xff1a; if(bool(布尔变量)) {如果bool值为真执行的语句; } else {如果bool值为假执行的语句; }如果布尔表达式为 true&#xff0c;则执行 if 块内的代码。如果布尔表达式为 false&#x…

2023北京/上海/广州/深圳物联网产品经理班招生简章

NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。 课程从…

第四十五讲:神州防火墙P2P流量控制配置

实验拓扑图如下所示 配置要求&#xff1a;出口带宽 100Mbps&#xff0c;外网为 eth0/1 接口&#xff0c; 内网连接两个网段172.16.1.0/24 和 192.168.1.0/24&#xff0c;需限制 P2P 应用其下行带宽为 10M&#xff0c;上传最大 5M。 配置步骤&#xff1a; 一、指定接口带宽 …

Struts2框架之result配置

Struts2框架之result配置result配置1、常用的结果类型1.1、dispather类型1.2、redirect类型1.3、redirectAction类型2、全局结果配置result配置 result配置一般与页面相关&#xff0c;请求经由对应Action处理后&#xff0c;返回一个字符串&#xff0c;根据返回的字符串找到对应…