美文网首页
异或操作的图形证明

异或操作的图形证明

作者: HugiFish | 来源:发表于2019-06-05 20:51 被阅读0次

异或操作在算法中有比较广泛的应用,最为经典的要属不利用额外空间交换两个变量的值。虽然可以利用二进制进行推导但是始终无法直观的记忆。下面我们就利用高中所学过的知识,直观的推导异或操作中两个定律,加深记忆。


异或操作就是一个逻辑问题,高中学过的集合知识也是一种逻辑问题,既然集合问题可以和图形联系起来,那么为什么异或操作不能呢。


异或和集合的假象联系

我们可以利用几何图形的面积代表集合,两个集合的交集就是图像重合的面积,并集就是两个图像在纸张上的实际面积(注意是实际面积,不是面积加和)
由于二进制每一位的异或运算是独立的,并不受其他位的影响,那么我们就可以把一串二进制数抽象成一个长纸条,每一位的区域都是固定的,如果这一位是1,那么这一位所对应的区域就是涂满的,相反,对应的区域就是空的,这个纸条上所有有面积的加和就是这个二机制对应的集合。
现在我们将二进制抽象称为面积表示。
异或操作在逻辑上就是或与非,映射到集合上,就是两个圆的没有重叠的面积的总和
根据上面这条红色的字,我们就可以对两条二进制纸带做异或运算了,就是把两条纸袋重合,然后抛去相互重叠的面积,最终得到的面积就是那个异或的值。

纸条名 7 6 5 4 3 2 1 0
a纸条
b纸条
(a^b)纸条

如果我们再进一步的抽象,把这个纸条堪称一张白纸上的一个圆,(这张白纸上每一位对应的区域是固定的),先花一个a圆,再一个b圆,由于每一位在白纸上对应的区域是固定的,如果a对应位和b对应位都是1,那么a和b在纸上的这个区域是重合的。那么a^b的面积是什么呢?就是下边这个


根据面积我们就可以正面好多东西啦~
比如说交换律和结合律

如上图所示
交换律:很好懂,因为每一位区域是固定的,所以无论是怎样的顺序,都不影响a圆和b圆在纸上的位置。自然面积也是一样的。
结合律:同理

相关文章

  • 异或操作的图形证明

    异或操作在算法中有比较广泛的应用,最为经典的要属不利用额外空间交换两个变量的值。虽然可以利用二进制进行推导但是始终...

  • 位的"异或"

    “异或”操作的本质其实就是,所有数值和自身进行按位的“异或”操作之后都为 0。而且要通过“异或”操作得到 0...

  • 位运算

    异或。 异或的规则。 2.常见的的操作 3.复杂的操作 例题 数字中1的个数

  • 位操作在编程中的应用

    本文内容来自位操作基础篇之位操作全面总结 位操作包括:与(&)、或(|)、异或(^,异为1,同为0)、左移(<<,...

  • 进制: 与、或、异或操作

    源码: bitwise.py 测试: main.py

  • LeetCode 389. Find the Differenc

    找出两个string中的单一值,使用异或操作,两个相同的值异或等于零,把两个string中的所有值都做异或操作,最...

  • 用 Python 加密文件!

    基础知识 在 Python 中异或操作符为:^,也可以记作 XOR。按位异或的意思是:相同值异或为 0,不同值异或...

  • js中小数取整的方法

    常用方法 “双按位非”操作 按位或 按位异或 左移操作符

  • 007 图像像素的逻辑操作

    本节内容:每个像素点的位操作。常见的有与或非、异或、同或等。 与、或、异或是针对两张图像的位操作;还可以针对一张图...

  • Java中&与&&、|与||的区别与联系

    前言 Java中逻辑操作符有&&(与)、||(或)、!(非),按位操作符有&(与)、|(或)、~(非)、^(异或)...

网友评论

      本文标题:异或操作的图形证明

      本文链接:https://www.haomeiwen.com/subject/jhbdxctx.html