高效解答二进制数“多异或”和“多同或”连续运算问题

简介: 高效解答二进制数“多异或”和“多同或”连续运算问题

 

“异或”的数学运算符表示为“⊕”,“同或”的数学运算符表示为“⊙”,在计算机网络中“1”表示“真”,“0”表示“假”

目录

异或运算

多异或连续运算

同或运算

多同或连续运算


Hello!你好哇,我是灰小猿!

在学习计算机网络的时候,有用到对二进制数进行异或(符号:⊕)和同或(符号:⊙)运算,所以在这里简单记录一下。

在数学中异或和同或常用于命题的判断,而在计算机中则常用于二进制数之间的运算,

异或运算

关于异或运算有以下的规定:

0⊕0=0 0同0异或,结果为0

0⊕1=1 0同1异或,结果为1

1⊕0=1 1同0异或,结果为1

1⊕1=0 1同1异或,结果为0

即两个逻辑变量相异,输出才为1

也可以用两句话表示:“异为1,同为0

多异或连续运算

而在计算机网络中真正对其进行使用的时候,两个二进制数之间的简单异或运算并不多见,更多的则是多异或连续运算。

首先看几个多异或连续运算的式子:

1⊕0⊕1⊕1⊕1=0

1⊕0⊕1⊕0⊕1=1

0⊕0⊕1⊕0=1

0⊕1⊕1⊕0=0

关于这种多异或连续运算,通常的思路是:

多个异或连续运算,就类似数学上的连加、连乘运算:将前两个数的运算结果,与第三个数继续运算;再将结果与第四个运算;直到最后得出结果,其中的每一步都要按照相应运算的规则进行;

但是也还有另外一种比较简单的判断方法:

多个命题(或命题变量)的“异或”运算:其结果依赖于参与运算的所有量中,取值为“真(1)”的量的“个数”的“奇偶性”:

  若含“奇数”个“真命题(1)”,则结果为“真(1)”;

  若含“偶数”个“真命题(1)”,则结果为“假(0)”;(注:零个也是偶数个)

所以这样看来,上面的式子中:

第一个有偶数个“1”则结果为“0”,

第二个有奇数个“1”则结果为“1”,

换句话说:命题表达式 A⊕B⊕C⊕D 结果为“真”,当且仅当 A、B、C、D 中有奇数个(即 1 个或 3 个)变量的取值为“真”;

而至于其中“假命题”的个数,则对结果“无任何影响”。关于这一点的证明,可以从下面两个恒等式中找到思路:

p ⊕ 1 = 非p;——增加一个“真命题”参与运算,总会将“原命题”变成其“反命题”;

p ⊕ 0 = p;——增加一个“假命题”参与运算,对“原命题”永远没影响;

同或运算

关于同或运算有以下几点要注意:

1.“同或”是一个数学运算符,应用于逻辑运算。 其运算法则为a同或b=ab+a‘b’(a'为非a)。

真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。

换句话说就是:两个值相同,则同或结果为真。反之,为假。——简称同真,异假。即,同或:相同为一,不同为零。

2. 同或符号为⊙。(圆圈内为点)

3. 同或和异或互为非运算。

4. 同或公式:

a⊙b=ab+a'b'(a'为非a,b'为非b);

5. 同或真值表

a

b

a⊙b

0

0

1

1

1

1

0

1

0

1

0

0

6.同或运算只有交换律和结合律

a ⊙ b = b ⊙ a; (a ⊙ b) ⊙ c = a ⊙ (b ⊙ c);

 

多同或连续运算

对于多个输入的同或可以这样理解:

a ⊙ 1 = a; a⊙ 0⊙ 0 = a;

即a与任意个1或偶数个0的同或,结果是a本身

例如:

1⊙ 1⊙ 0⊙ 1⊙ 0⊙ 0的运算方法为:

1)根据交换律,可以把输入中的 1 全部向右靠在一起得

0⊙ 0⊙ 0⊙ 1 ⊙1⊙ 1,然后根据结合律

0⊙ 0⊙ 0⊙ (1⊙1⊙ 1),消去所有 1,得

0⊙ 0⊙ 0

2)消去偶数个 0,得结果为:0

如果步骤 1)将得到偶数个 0 则少消除一个 1 作为结果

简而言之,同或运算就是观察输入中 0 的个数。奇数个 0 则结果为 0 ,偶数个 0 则结果为 1

觉得有用记得点赞关注哟!

大灰狼陪你一起进步!

image.gif编辑

目录
相关文章
|
人工智能 文字识别 计算机视觉
【AAAI 2024】M2Doc:文档版面分析的可插拔多模态融合方法
M2Doc是一种创新的多模态融合方法,设计用于增强文档版面分析任务中的纯视觉目标检测器。该方法包括Early-Fusion和Late-Fusion模块,前者通过门控机制融合视觉和文本特征,后者则在框级别合并这两种特征。M2Doc易于集成到各种目标检测器,实验证明它能显著提升DocLayNet和M6Doc数据集上的性能,特别是与DINO结合时,在多个数据集上达到SOTA结果。此外,研究表明M2Doc对于增强复杂逻辑版面分析任务中的文本理解和语义关联特别有效。
|
存储 芯片 内存技术
DRAM集中刷新,分散刷新,异步刷新的区别
DRAM集中刷新,分散刷新,异步刷新的区别
2228 0
|
缓存 Ubuntu Java
‘settings.xml’ has syntax errors less… 和Parent ‘org.springframework.boot’has problems less…的问题解决
‘settings.xml’ has syntax errors less… 和Parent ‘org.springframework.boot’has problems less…的问题解决
825 0
‘settings.xml’ has syntax errors less… 和Parent ‘org.springframework.boot’has problems less…的问题解决
|
6月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
459 24
|
9月前
|
Windows
通过DISM清理组件储存文件
WinSxS是Windows系统重要文件夹,占用大量C盘空间。通过PowerShell运行DISM命令可有效清理冗余组件,缩小其体积,释放磁盘空间。
|
关系型数据库 MySQL PHP
新手教程:PHP入门教程
《PHP入门教程》涵盖PHP简介、环境搭建、第一个PHP脚本、基本语法、表单处理、函数定义及进一步学习方向。PHP是一种开源脚本语言,适合Web开发。环境搭建可使用XAMPP/WAMP/MAMP或手动安装Apache、PHP和MySQL。通过编写简单代码和处理表单,逐步掌握变量、字符串、数组、条件语句和循环等基础语法。最后介绍数据库操作、会话管理和面向对象编程等高级特性。
492 70
|
10月前
|
前端开发 Java 数据库
2025 年 Java 学习完整步骤及详细路线指南
本教程涵盖Java从基础到高级的完整学习路径,包括环境配置、语法基础、面向对象编程、集合框架、多线程、网络编程、数据库操作、Spring Boot、微服务架构及项目实战。通过系统学习与实操,助你全面掌握Java核心技术与企业级应用开发。
1365 1
|
存储 Perl
如何使用awk处理CSV文件?
【10月更文挑战第16天】如何使用awk处理CSV文件?
635 3
|
自然语言处理 算法 机器人
2025年热门智能客服机器人评测:哪款更好用?
2025年,智能客服机器人市场竞争激烈,功能日益强大。主要品牌如合力亿捷、阿里云、华为云、京东京小智和小米商城等纷纷推出具备精准语音识别、语义理解、多渠道接入等功能的产品,广泛应用于电商、金融、零售等领域,显著提升客服效率与客户满意度,降低企业运营成本。
1198 0
|
Linux 网络安全 Android开发
Termux-远程管理Linux服务器
在手机上通过termux管理Linux服务器
2552 0
下一篇
开通oss服务