首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

异或运算(XOR)

接下来我们来分析下对扑克牌进行翻转|不翻转处理以及对应特征,我们发现结果和异或运算是一致的。 异或运算的特征可以简单的归纳为:相同为0,不同为1。...常用位运算符补充 位操作符用于最基本的层次,它们按照内存中表示数值的位来操作数值,位运算符主要有:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(>),这里将简单介绍常用的位运算符以及其基本特征作为补充...按位或运算(OR)的运算符为|, 是双目运算符,其运算特征是:两个运算数中有1则为1,否则为0。...上面的计算过程非常简单,这里要特别说明的是因为异或运算的特点是:相同为0,不同为1, 所以考虑如果把A ⊕ B得到的结果 和 B 再次进行XOR运算,那么结果会变回A,即A ⊕ B = C ,C ⊕ B...但实际上,这样简单的一次性密码并没有在现实中被广泛使用,原因有以下几点:① 因为加密解密使用的是相同的密钥,所以无法保证密钥的配送和保存的安全。

21.8K10

程序员使用位运算装逼指南

运算可谓是与编程息息相关,我们编写的每一个程序可能都带有加减乘除,当然这是最基础的运算了。在大一下的时候学了第一门编程语言C,随着也学到了取余(%)和三目运算符(? :),当时就觉得(?...按位或(|) 按位或运算法则可以概括成“同假才假,反之则真”,在0和1之间的运算,有以下形式: 1 | 1 = 1 1 | 0 = 1 0 | 0 = 0 同样还用数字5和数字6举例,利用上述相同方式在二者之间做按位或运算...按位异或(^) 按位异或运算法则可以概括成“相同则假,不同则真”,在0和1之间的运算,有以下形式: 1 | 1 = 0 1 | 0 = 1 0 | 0 = 0 仍然还是数字5与数字6为例利用上述相同方式在二者之间做按位异域运算...^ b = b ^ a 2.按位异或满足结合律,即(a^b)^c=a^(b^c) 3.任何数与0异或都等于它自己,比如a ^ 0 = a。...而利用按位异或运算只需引入一个第三变量就可以解决这个问题,利用上文提及的异或性质1和3、以及“相同则假”的法则即可。

65920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java基础第三天学习笔记

    * ^逻辑异或:相同为false,不同为true。 * !逻辑非:非false则true,非true则false。 * 特点:偶数个不改变本身。...* &:有0则0 * |:有1则1 * ^:相同则0,不同则1 * ~:按位取反 03.04_Java语言基础(位异或运算符的特点及面试题)(掌握) * A:案例演示 * 位异或运算符的特点...* ^的特点:一个数据对另一个数据位异或两次,该数本身不变。...* B:案例演示 * 获取三个整数中的最大值 03.08_Java语言基础(键盘录入的基本格式讲解)(掌握) * A:为什么要使用键盘录入数据 * a:为了让程序的数据更符合开发的数据 * b:...* 如果是true,就执行语句体1; * 如果是false,就执行语句体2; * C:案例演示 * a:获取两个数据中较大的值 * b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数 * 注意事项

    80970

    Java基础笔记03

    |逻辑或:有true则true。 ^逻辑异或:相同为false,不同为true。 !逻辑非:非false则true,非true则false。 特点:偶数个不改变本身。...有1则1 ^:相同则0,不同则1 ~:按位取反 03.04_Java语言基础(位异或运算符的特点及面试题)(掌握) A:案例演示 位异或运算符的特点 ^的特点:一个数据对另一个数据位异或两次,该数本身不变...表达式1 : 表达式2; B:三元运算符的执行流程 C:案例演示 获取两个数中的最大值 03.07_Java语言基础(三元运算符的练习)(掌握) A:案例演示 比较两个整数是否相同 B:案例演示...获取三个整数中的最大值 03.08_Java语言基础(键盘录入的基本格式讲解)(掌握) A:为什么要使用键盘录入数据 a:为了让程序的数据更符合开发的数据 b:让程序更灵活一下 B:如何实现键盘录入呢...如果是true,就执行语句体1; 如果是false,就执行语句体2; C:案例演示 a:获取两个数据中较大的值 b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数 注意事项:else后面是没有比较表达式的

    68680

    阶段01Java基础day03JAVA基础

    |逻辑或:有true则true。 ^逻辑异或:相同为false,不同为true。 !逻辑非:非false则true,非true则false。 特点:偶数个不改变本身。...03.03_Java语言基础(位运算符的基本用法1) A:位运算符有哪些 B:案例演示 位运算符的基本用法1 &,|,^,~ 的用法 &:有0则0 |:有1则1 ^:相同则0,不同则1 ~...:按位取反 03.04_Java语言基础(位异或运算符的特点及面试题) A:案例演示 位异或运算符的特点 ^的特点:一个数据对另一个数据位异或两次,该数本身不变。...03.08_Java语言基础(键盘录入的基本格式讲解) A:为什么要使用键盘录入数据 a:为了让程序的数据更符合开发的数据 b:让程序更灵活一下 B:如何实现键盘录入呢?...如果是true,就执行语句体1; 如果是false,就执行语句体2; C:案例演示 a:获取两个数据中较大的值 b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数 注意事项:else后面是没有比较表达式的

    61610

    day03-运算符

    组成:为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号) 在Python中,三目运算符会返回一个结果 我们用实例来学习下: a = 5,b=10,使用三目运算符得出两数中的较大值...如果是返回"符合",不是就返回"不符合" 中级: 1.编写一个程序,接受用户输入的两个数字,并使用赋值运算符实现变量交换,然后输出交换后的结果 2.编写一个程序,接受用户输入的一个正整数,并判断它是否为偶数...如是偶数返回True,是奇数返回False 3.编写一个程序,接受用户输入的一个字符串,并判断它是否包含字母 "a" 或 "b"。...是闰年且大于2000年",不符合条件,输出"不符合条件" 高级: 1.编写一个程序,要求用户输入1个整数,使用三目运算符判断这个整数是奇数还是偶数,如果奇数返回"奇数",如果是偶数,返回"偶数"。...2.编写一个程序,接受用户输入的一个三位数,并计算它的百位、十位和个位数字之和。

    19530

    七分钟全面了解位运算

    按位或按位或运算将参与运算的两数对应的二进制位相或,只要对应的二进制位中有 1,结果位为 1,否则结果位为 0。按位或运算的运算符为 |,参与运算的数以补码方式出现。...按位异或按位异或运算将参与运算的两数对应的二进制位相异或,当对应的二进制位值不同时,结果位为 1,否则结果位为 0。按位异或的运算符为 ^,参与运算的数以补码方式出现。...坊间一直流传着位运算的效率高,速度快,但从未见过文献证明,所以本文不讨论效率和速度的问题。如果正在阅读文章的你有相关文献,请留言告知,谢谢。判断数字奇偶通常,我们会通过取余来判断数字是奇数还是偶数。...例如判断 101 的奇偶用的方法是:# python if 101 % 2: print('偶数') else: print('奇数') 我们也可以通过位运算中的按位与来实现奇偶判断,例如...所以,无论任何奇数与 1 即 0000 0001 相与得到的都是 1,任何偶数与其相与得到的都是 0。变量交换在 C 语言中,两个变量的交换必须通过第三个变量来实现。

    1K30

    深入理解Java中的位运算符

    摘要  本文将深入介绍Java中的位运算符,包括按位与、按位或、按位异或、按位取反、左移、右移等,同时详细解析它们的用法和实现原理,并通过实例演示如何应用位运算符来解决程序中的实际问题。...应用场景案例位运算符在Java开发中有很多实际应用场景,下面列举一些比较常见的应用案例:奇偶性判断  判断一个数是奇数还是偶数,可以使用按位与运算符(&)。...交换两个数的值  交换两个数的值可以使用按位异或运算符(^)。因为异或运算规则是:两个二进制位不同则结果为1,相同则为0,因此可以通过异或运算来交换两个数的值,同时不需要使用额外的变量。...小结  本文介绍了Java中的位运算符,包括按位与、按位或、按位异或、按位取反、左移、右移等。同时还详细解析了它们的用法和实现原理,并通过实例演示如何应用位运算符来解决程序中的实际问题。...总结  本文介绍了Java中的位运算符,包括按位与、按位或、按位异或、按位取反、左移、右移等。同时还详细解析了它们的用法和实现原理,并通过实例演示如何应用位运算符来解决程序中的实际问题。

    65641

    位运算

    由于位运算直接对内存数据进行操作,不需要转换成十进制,因此处理速度非常快,在信息学竞赛中往往可以优化理论时间复杂度的系数(常数优化)。 ​ C++提供了6种位运算符。...如果两个相应的二进制位数字有一个为1,则该位的结果为1;否则为0。 ^ 按位异或 "a^b"按二进制位进行“异或”运算。如果两个相应的二进制位数字不相同,则该位的结果为1;否则为0。...那么一个数只要它的二进制的第000位上为1,他就一定是奇数,否则就是偶数。...print(i); } 这道题某种意义上就是“状态压缩”,将多个只有两种状态的事物的当前状态使用一个整数的二进制形式来表达,而不是状态数组。...存在“交换律”,a^b=b^a 所以,a^b^a=b 偶数个相同的数字进行异或运算,结果为0 寻找奇数次数字 利用^“偶数个相同的数字进行异或运算,结果为0”的特性,将所有的数字进行异或计算,最后剩下的就是出现奇数次的数字

    88810

    位运算符与(&)、或(|)、异或(^)、非(~)、左移()、右移补零(>>>)如何选择?

    (摘自百度百科) 位运算符用来对二进制位进行操作,Java中提供了如下所示的位运算符(操作数只能为整型和字符型数据): & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 除 ~ 以外,其余均为二元运算符...最高位如果是 0 的话(正数), 不变,正数的补码就是它的原码。 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。...^ 按位异或 ^:如果相对应位值相同,则结果为 0,否则为 1。...(源码用位运算) 不过实际工作中,很少用到它,我也不知道为什么很少有人用它,我想应该是它比较晦涩难懂,如果用它来进行一些运算,估计编写的代码可读性会不强,毕竟我们写的代码不仅仅留给自己一个人看。...判断 int 型变量 a 是奇数还是偶数 a&1 = 0 偶数 a&1 = 1 奇数 2.

    2.4K20

    强大的位运算

    什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。...举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。 ?...奇偶校验: num&1 奇数返回1 偶数返回0 0 返回0 绝对值 ~num + 1 乘 2, 4, 8, 16, 32 << 1, 2, 3, 4, 5 除 2, 4, 8, 16,...) = 1000 C语言运算符优先级口诀:“单算移关与,异或逻条赋”。...=); * “与”表示按位与(&); * “异”表示按位异或(^); * “或”表示按位或(|); * “逻”表示逻辑运算符:逻辑与(&&)级别高于逻辑或(||); * “条”表示条件运算符(

    68960

    位运算 - 初见

    位运算运算符 按位与 & 相同位的两个数字都为1,则为1;若有一个不为1,则为0。...这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。 更多技巧慢慢看,在后面。 按位或 | 相同位只要一个为1即为1。...按位异或 ^ 两个位相同为0,相异为1 示例:6 ^ 11 0 1 1 0 1 0 1 1 ^ ----------- 1 1 0 1 = 13 ^运算通常用于翻转指定位。...按位取反 not运算的定义是把内存中的0和1全部取反。 示例:~ 6 使用按位取反运算符,要知道几点: 1、内存中,一个int,4个字节,1字节8位。 2、有符号整数的按位取反情况略有偏差。...位操作判断奇偶数 只要根据数的最后一位是 0 还是 1 来决定即可,为 0 就是偶数,为 1 就是奇数。

    54630

    基础算法——位运算(解决你初学位运算的所有疑惑)

    位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。...在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。 在算法中使用位运算,只有一个目的——就是快!...C语言中六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~取反 *>>右移 <<左移 此刻就有彦祖要说了,这些我都知道,能不能讲一下,**在哪里使用啊?...故a会被赋上b的值。 位运算判断奇偶数 我们通过二进制判断奇偶的话,我们可以看该数二进制的最后一位是0的话那么就为偶数。...=(1&i)) cout奇数"<<endl; else cout偶数"<<endl; } return 0; } 位运算改变正负性 变换符号就是正数变成负数

    33220

    「Python」语言元素、分支结构和循环结构

    运算器和控制器的结合:中央处理器。执行各种运算和控制指令以及处理计算机软件中的数据。 指令的结合:程序。...= 逻辑运算符:and or not 位运算符:& | ~ ^ >> << 运算符优先级 :单目运算符(~ + -)> 算术运算符 > 位运算符 > 比较运算符。有小括号的,小括号优先。...运算符 描述 [] [:] 下标、切片 ** 指数 ~ + - 按位取反、正好、负号 * / % // 乘、除法(结果为浮点类型)、取余数、整除/商数取整 + - 加、减 >> << 右移、左移 & 按位与...^ | 按位异或、按位或 >= 小于等于、小于、大于、大于等于 == !...while 循环通过一个能够产生或转换出 bool 值的表达式来控制循环,表达式的值为 True 则继续循环;表达式为 False 则结束循环。

    93920

    位运算 原

    这种具有逻辑属性的变量就称为逻辑变量。 计算机的逻辑运算的算术运算的主要区别是:逻辑运算是按位进行的,位与位之间不像加减运算那样有进位或借位的联系。...运算符号 下面的a和b都是整数类型,则: 含义 Pascal语言 C语言 Java 按位与 a and b a & b a & b 按位或 a or b a | b a | b 按位异或 a xor b...Java位运算是针对于整型数据类型的二进制进行的移位操作。主要包括位与、位或、位非,有符号左移、有符号右移,无符号右移等等。需要注意一点的是,不存在无符号左移运算符。...不过实际工作中,很少用到它,我也不知道为什么很少有人用它,我想应该是它比较晦涩难懂,如果用它来进行一些运算,估计编写的代码的可读性会不强,毕竟我们写的代码不仅仅留给自己一个人看。 1. ...判断int型变量a是奇数还是偶数          a&1  = 0 偶数       a&1 =  1 奇数  2.

    1K20

    Python这些位运算的妙用,绝对让你大开眼界!

    位运算常用的运算符包括&(按位与), | (按位或),~(按位非),^(按位异或),>(有符号右移位)。 下面用几个例子说明其应用,希望对你有所启发。...1、判断奇数还是偶数 通常判断奇数还是偶数我们想到的办法就是除以2,看余数是否为0。...我们只需要使用&运算,与1进行&,如果为1,那么该数为奇数;如果为0,那么该数是偶数,Python代码如下: def isodd(x): return True if (x & 1) else...False 2、左移一位相当于乘以2,右移一位相当于除以2 在面试的过程中,通常会遇到的一个问题是写二分查找代码。...1还是0(如判断奇数偶数,统计数值中1的个数); 2、左移右移特性:左移一位相当于乘以2,右移一位相当于除以2; 3、异或特性:任意数和自身异或结果为0;0和任意数异或结果还是其本身。

    1.2K20

    javascript 位操作用途、位移枚举(多选枚举)

    计算机系统中,数值一律采用补码来表示和存储(寄存器)。 javascript 中所有数字均用浮点数值表示,采用 IEEE 754 标准定义的 64 位浮点格式表示数字。...运算结束后,再按照 64 位浮点格式存储。这样导致的结果:精度丢失(直接截断)! 按位运算符 注意: 所有操作都是基于计算机存储的补码进行操作的。...00000001 补码:11111111 11111111 11111111 11111111 右移:11111111 11111111 11111111 11111111 // 无符号 注意:与其它按位运算符不同...用途 清零 任何数与0做与运算结果都是0 123123 & 0 // 0 -12312 & 0 // 0 奇数偶数判断 二进制的末尾是0则是偶数,为1则是奇数 (x & 1) === 0 //...偶数为true,奇数为false 交换两数值 x ^= y y ^= x x ^= y 位移枚举(与传统枚举,可支持多选) 举例,对于数据权限,通常包括增、删、改、查;某角色对某一数据权限,往往是一对多的过程

    68640

    详解C语言中的分支语句(上)

    1.前言 C语言是一个结构化的程序设计语言,这里所说的结构就是指顺序结构、选择结构、循环结构。C语言有能力实现这三种结构。...在那个判断奇数的例子中,我们只展示了当它是奇数的情况时,就会打印“这个数是奇数”。那如果我们想在这个基础之上(不是奇数),输出“这个数是偶数”。该如何做?...(就是二选一) 在例子中感悟和学习 if…else… 语句的道理和语法 例子1:输入一个整数,判断是否为奇数,如果为奇数打印是奇数,否则打印偶数。...另外,我们在使用关系运算符时,要避免一个错误:多个关系运算符不宜连用。 为什么呢? 请看例子: 什么!不是说好的输出不了"认真学习"吗,为什么会出现这种情况?...我们在上面讲过,关系表达式通常返回0或1。而ac的眼中是这样的:(ac)<b 所以到这里我们就懂了,先算ac,再算(ac)<b。

    9410
    领券