-
2021-09-02 13:09:24
0.前言
1.定义
异或是一个数学运算符,它应用于逻辑运算
数学符号⊕
计算机符号 eor1.1运算:
a ⊕ b = (¬a ∧ b ) ∨ (a ∧ ¬b) 1. a、b两值相同,则异或结果为0;a、b两值不同,则异或结果为1 2. 也可以说是“不进位相加”——半加运算
1.2法则:
- 归零率 a ⊕ a = 0
- 恒等率 a ⊕ 0 = a
- 交换律 a ⊕ b = b ⊕ a
- 结合律 a ⊕ b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c
- 自反 a ⊕ b = b ⊕ a
- d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c
2.应用
2.1交换两个变量的值
int a = 12; int b = 4; // 执行完如下语句a的值为a ⊕ b a = a ^ b; // 执行下面的预计隐藏的含义是 b = a ⊕ b ⊕ b,根据归零率和恒等率得 b = a b = a ^ b; // 执行下面的预计隐藏的含义是 a = a ⊕ a ⊕ b,根据归零率和恒等率得 a = 原b a = a ^ b; // 执行完成这3句话 a、b的值就交换了
2.2只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
解题原理:根据交换律、结合律,把出现两次的数据都按归零率归零了,唯一一个元素跟零按恒等率得到唯一元素值public static void main(String [] args){ int [] data = new int [] {1,1,3,2,1,1,4,3,4,5,5}; int eor = 0; for(int item : data ) { eor ^= item; } System.out.println(eor); }
2.3两个不同的数字
给定一个非空整数数组,除了某两个元素只出现一次以外,其余每个元素均出现两次。找出这两个的元素。
解题原理:- 假设a、b是非空数组里的只出现一次的数据。把这个数组所有数据异或起来最后只余下 a ⊕ b
- 因为a与b不一致所以a转换为二进制与b转换为2进制后的数据肯定至少有一位不一样,找出这一位(怎么找下面买描述)
- 再从列表中找到与这个二进制位一样的数据(下面再描述怎么找),把这些数据进行异或,就能得到其中一个不一样的数字。(这样想,非空数组中的而所有数字转换成进制,这些数字中的其中一位不是0就是1,我们按照第二步中找到的二进制位置把数组分成两组。这两组中的一组,这位二进制肯定都是一样的,而题干中相同的元素这个二进制位置上的数字肯定一样,这样这组数字全部异或就只剩下那个这组中的唯一个没有出现过两次的数字)
- 最后,把第3步中得到的数据与第一步中异或的结果再异或就得到另外一个不一样的数据。
实现:
文文的博客:躬身自省,淳朴而谦逊否
更多相关内容 -
c异或运算 c异或运算符号
2020-09-04 10:30:22位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果 -
十六进制字符串按位异或运算工具和java位异或运算
2017-10-27 16:36:33可进行十六进制字符串按位异或运算,就是输入十六进制数,每个十六进制数间输入空格,然后点输出即可得到结果 -
Java编程实现对十六进制字符串异或运算代码示例
2020-08-28 11:32:57主要介绍了Java编程实现对十六进制字符串异或运算代码示例,简述了异或运算以及具体实例,具有一定借鉴价值,需要的朋友可以参考下。 -
异或运算小工具
2017-02-09 15:07:39异或运算,传入两个数据进行异或运算。得到相应的数据 -
异或运算怎么算
2021-07-24 02:10:10异或运算异或,英文为exclusive OR,缩写成xor。异或(eor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“eor”。1.归零律:a⊕a=02.恒等律:a⊕0=a3.交换律:a⊕b=b⊕a4.结合律:a⊕b...异或运算
异或,英文为exclusive OR,缩写成xor。异或(eor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“eor”。
1.归零律:a⊕a=0
2.恒等律:a⊕0=a
3.交换律:a⊕b=b⊕a
4.结合律:a⊕b⊕c=a⊕(b⊕c)=(a⊕b)⊕c;
5.自反:a⊕b⊕a=b.
6.d=a⊕b⊕c可以推出a=d⊕b⊕c.
7.若x是二进制数0101,y是二进制数1011;
则x⊕y=1110
只有在两个比较的位不同时其结果是1,否则结果为0
即“两个输入相同时为0,不同则为1”!
异或运算怎么算
异或的运算方法是一个二进制运算:
1^1=0
0^0=0
1^0=1
0^1=1
两者相等为0,不等为1.
方法/步骤:
1.逻辑表达式:F=AB‘⊕A’B((AB‘⊕A’B)‘=AB⊙A’B‘,⊙为“同或”运算)
异或逻辑的关系是:当AB不同时,输出P=1;当AB相同时,输出P=0。“⊕”是异或运算符号,异或逻辑也是与或非逻辑的组合,其逻辑表达式为:
P=A⊕B
2.口诀1:相同取0,相异取1
口诀2:
输入A取0,则输出p=输入B
输入A取1,则输出p=输入B的反
事实上,XOR 在英文里面的定义为either one (is one), but not both, 也即只有一个为真(1)时,取真(1)。
3.在计算机中普遍运用,异或(xor)的逻辑符号一般用xor,也有用⊕的:
真⊕假=真
假⊕真=真
假⊕假=假
真⊕真=假
责任编辑:YYX
-
python 异或运算的前提_异或运算公式
2020-12-04 00:12:25Python-第七城市609x288 - 73KB - JPEGPython基础(10)--数字_资讯_突袭网609x288 - 33KB - JPEGpython学习笔记之运算符_第1页_web前端开发715x330 - 20KB - PNG【效率提升】Python中的并行运算1728x1080 -...Python基础(10)–数字-Python-第七城市
609x288 - 73KB - JPEG
Python基础(10)--数字_资讯_突袭网
609x288 - 33KB - JPEG
python学习笔记之运算符_第1页_web前端开发
715x330 - 20KB - PNG
【效率提升】Python中的并行运算
1728x1080 - 821KB - JPEG
Python 运算符 - 软件开发其他 - 红黑联盟
729x443 - 32KB - PNG
Python的条件语句与运算符优先级详解_「电脑
740x426 - 43KB - JPEG
Python新手学习基础之运算符--赋值与逻辑运算
470x324 - 25KB - PNG
Python入门 --基本数据类型与运算符_Python_第
706x342 - 81KB - PNG
Python-数据运算_资讯_突袭网
1472x810 - 105KB - PNG
python--运算符_资讯_突袭网
727x425 - 55KB - JPEG
Python新手学习基础之运算符--算术运算符_「
384x697 - 20KB - PNG
深入解析Python中的变量和赋值运算符_Python
743x274 - 30KB - JPEG
python--运算符_资讯_突袭网
731x249 - 49KB - JPEG
python--运算符_资讯_突袭网
733x278 - 48KB - JPEG
python--运算符_资讯_突袭网
728x277 - 54KB - JPEG
Python 运算符 什么是运算符?本章节主要说明Python的运算符。举个简单的例子 4+5=9。例子中,4 和 5 被
Python为揭开异或加密运算的加密及解密过程 去下载 下载需先安装客户端 {clientText} 客户端特权:3倍流畅
思路要点:一个数字和自己异或一次会变成0。参考代码: import 详解Python中的位运算符规则、原理与用法
python中“按位与,或,异或”与C语言的不同 按位异或运算的典型用法是求一个位串信息的某几位信息的反。
今天在使用Python的异或运算的时候,结果发现得出的结果和我python 异或运算 交换a,b两值的方法:a=a^b;
交换a,b两值的方法: a=a^b;b=a^b;a=a^b;b=a^b=(a^b)^b=a^b^b=a^(ba异或b=(a and(not b))or((not a)and b)
Python语言支持以下类型的运算符- 1.算术运算符 2.比较(关系)运算符 3.赋值运算符 4.逻辑运算符 5.按位运算
在python编程语言里面: 按位的运算,都按位的按位异或运算的典型用法是求一个位串信息的某几位信息的反。
卡罗方法求解圆周率近似值原理与python实现两行python代码实现电影打分与推荐python按位异或运算符^应用
-
java实现两个文件的异或运算
2020-08-27 06:28:59主要为大家详细介绍了java实现两个文件的异或运算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Java使用异或运算实现简单的加密解密算法实例代码
2020-08-28 11:06:36主要介绍了Java使用异或运算实现简单的加密解密算法实例代码,具有一定借鉴价值,需要的朋友可以参考下。 -
异或运算
2020-02-17 01:00:53异或运算法则 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0...异或运算法则
- 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以 异或常被认作不进位加法。(来源于搜狗百科)
例如,计算 1011101^1000011:
异或性质与扩展
(用不进位相加较好理解)
- 0 ^ N = N
- N ^ N = 0
- 异或运算满足交换律和结合律
c =a ^ b =b ^ a
c =( a ^ b )^ c = a ^ ( b ^ c ) - 不用额外变量交换两个数:
- 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这个数?
例如,该数组为 a[]={1, 2, 2, 3, 3}
将所有的数全部异或运算,运算结果就是出现了奇数次的数。 - 一个数组中有两种出现了奇数次,其他数都出现了偶数次,怎么找到这两个数?
例如,该数组为a[]={1,2,4,4,5,5}- 让该数组中所有的数字做异或运算,那么设结果 eor == a ^ b != 0 ;
- 因为eor 不为 0 ,则可以假设 a 与 b在某位上,比如在第三位上,a第三位是1,则b的第三位为0;
- 在其余的出现偶数次的数字中,找出所有在第三位为1的数;
- 用变量 eor’ 与这个数组中所有第三位为1的数做异或运算 ,则 eor’ 最终的答案为a,因为所有第三位为1的数字,除了a,其余为偶数个,异或运算后为0。(因为除了a 与 b ,其余数字的个数都为偶数个,那么可以确定第三位为1的和第三位为0的个数都为偶数个。因为 eor = a ^ b,且其余偶数运算之后结果为0,如果第三位为1的数字个数为奇数,那么第三位为0的数字个数也为奇数,那么将他们全部进行异或运算后,第三位数字为1,不为0,与实际不符。)
- 再用eor与eor’做异或运算,即a ^ b ^ a = b, 再计算 eor ^ eor’ ^ eor ,即 b ^ a ^ b = a;
以下给出该题解的代码:首先了解如何取到该数最右端的1,就是该数取反加一再与该数 (核心:
int rightOne = eor & ( ~ eor + 1 );
)
public static void printOddTimesNum(int[] arr){ int eor=0; for(int i=0;i<arr.length;i++) eor^=arr[i]; //提取出最右端的1 int rightOne=eor&(~eor+1); int onlyOne=0; //eor' //找出这个数组中所有在最右端为1的数字,做异或运算 for(int cur:arr){ if((cur&rightOne)!=0) //说明该数当前位上的数字也是1 { onlyOne^=cur; } } System.out.println(onlyOne+" "+(eor^onlyOne)); }
-
异或运算加密
2018-05-09 16:26:19异或运算加密,开发环境vs2013,仅支持整型数据加密,能够实现加密和解密。 -
异或运算在算法中的经典运用
2020-08-10 15:04:00“一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字?”这是经典的算法题,乍看这个题的思路特别多。 -
单层感知器Matlab代码-异或运算
2019-01-31 12:40:26适合在校大学生初步实验使用,将此程序直接粘贴到Matlab的m文件中,便可直接运行,得到结果,本人已在博客中发表“与”运算实验,神经网络网址如...通过看我的博文,自己编出“异或”运算代码 -
python中的异或运算
2020-12-04 00:12:28发现了一个很简单快速的方法: class Solution: def singleNumber(self, nums: List[int]) -> int: return reduce(lambda x, y: x ^ y, nums) 查了一下异或运算,发现找到唯一值是异或运算在python中的主要用途之一... -
什么是异或_异或运算及异或运算的作用
2020-04-28 21:37:18什么是异或_异或运算及异或运算的作用 异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧... -
C++使用异或运算实现交换两个数的值
2020-08-26 23:33:12交换两个数的值,通常用利用一个变量来交换数值,异或交换两个数的值是资源开销最小的方法,不需要中介数,原理简单的来说就是异或的负负得正 -
c语言之异或运算
2021-07-30 08:19:45c语言之异或运算 异或运算,计算机相关专业比较熟悉了。相同为0,不同为1.结合计算机内部的位运算,a^a=0;与本身异或是为0的。有关的知识运用到数据交互中去。 void int_swap(int *x,int *y){ *y=*x^*y;//step1 *x... -
异或运算常见的应用
2022-01-27 11:16:01接下来将介绍异或运算的一些基础知识以及在实际中的一些应用 基础知识 异或是计算机中一种二元逻辑运算, 运算符号是 ^,它按照二进制位进行异或运算,结果为 真 或 假, 它的运算法则如下 x y x^y 0. -
详解异或运算
2020-11-12 22:58:50搞不懂异或的朋友看过来,文章写得嘎嘎明白。 -
什么是异或运算,异或运算的作用参考.doc
2021-09-19 04:04:01什么是异或运算,异或运算的作用参考.doc -
java中的异或运算
2022-01-18 16:24:50在java中"^"表示异或,异或运算相同为0,相异为1; 异或运算的性质 (1) 0^N=N, N^N=0 实例 public static void main(String[] args) { int t=0; t=0^7; System.out.println(t); } 输出结果为7 (2)异或运算... -
异或运算规律
2021-05-22 19:48:351.a ⊕ a = 0 2. a ⊕ b = b ⊕ a 3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ...根据两个相等的数异或值为零:如sum = a ^ b ^ c ^ d,如果随机删去一个变量比如删除b之后的异或和为sum1 = a ^ c ^ d,那么有sum1 = sum^ -
异或运算 XOR ⊕ 教程
2021-06-21 13:42:57大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要。 本文介绍异或运算的含义和应用。 -
Java异或运算
2021-04-23 19:57:37异或运算是二进制的位运算。 1⊕1=0; 0⊕0=0; 1⊕0=1; 0⊕1=1.。 异或运算有以下三个性质。 任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a。 任何数和其自身做异或运算,结果是 0,即 a⊕a=0。 异或运算... -
hdu 1287(异或运算的逆运算)
2021-05-25 05:51:32(1^0=1)其实异或运算的性质很多都是直接根据1 0的运算性质来的)然后就有 B xor C = A然后就可以破译猪头帮的密码的,先把密码异或一下看是不是都是大写字母, 至于可能有重复情况就不知道怎么弄了。。。破译密码Time... -
异或运算算法
2021-08-08 07:24:431异或运算法则 异或运算:相同为0,不同为1 异或运算就记成无进位相加。 满足交换律,结合律。 0^N = N N^N = 0 int a = 7; // 00111 int b = 13; // 01101 01010 = 8+2 = 10 2不用任何空间的情况下交换两个... -
js 异或运算^
2022-04-10 10:54:04//如果只有一个出现次数是奇数的数的话 , 我们只需要对整个数组进行异或运算 , 算出来的结果就是奇数 //如果有两个出现次数是奇数的数的话 , 我们就需要先对整个数组进行异或运算 , //根据运算结果把元素组分成两个...