异或性质和应用

本文深入探讨了异或运算的性质,包括恒等律、归零律、交换律、结合律等,并展示了其在数字比较、位翻转、计数、值交换等方面的应用。此外,还讲解了如何利用异或解决找到数组中出现一次的数字问题。同时,文章提及了与或运算的性质和摩尔定理,以及异或在优化条件判断和数值操作中的作用。
摘要由CSDN通过智能技术生成

异或的一些性质:
异或性质:A xor B=A’ *B + B’ * A
恒等律:X xor 0 =X
归零律:X xor X =0
交换律:A xor B=B xor A
结合律:(A xor B) xor C=A xor(B xor C)
与、或交换律:
A · B = B · A
A + B = B + A
与、或结合律:
(A · B) · C = A · (B · C)
(A + B) + C = A + (B + C) 
与、或分配律
A · (B + C)= A · B + A · C
A + B · C = (A + B) · (A + C)
摩尔定理
(A · B)’ = A’ + B’
(A + B)’ = A’ · B’
自反:
A ⊕ B ⊕ B = A ⊕ 0 = A
A ⊕ 1 = A’;
A ⊕ 0 = A;
A ⊕ A = 0;
A ⊕ A’ = 1;
异或性质的应用:
1、快速比较两个int数字是否相等 a^b==0
2、将特定位反转,0和1与1异或之后都会得到相反值
10100001 ^ 00100000 = 10000001
3、我们使用异或来判断一个二进制数中1的数量是奇数还是偶数
例如:求10100001中1的数量是奇数还是偶数; 答案:1 ^ 0 ^ 1 ^ 0 ^ 0 ^ 0 ^ 0 ^ 1 = 1,结果为1就是奇数个1,结果为0就是偶数个1
4、经典题目:不使用其他空间,交换两个值
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a ^ 0 = a;
a = a ^ b;
5、一个整型数组里除了N个数字之外,其他的数字都出现了两次,找出这N个数字;
如果只有一个,将所有数字异或,最后得到的数就是该值
如果有两个,所有数字异或后得到a xor b
第二步:想办法得到 a 或者 b,假设 aXORb 为 00001001(F肯定不为0),根据aXORb 的值我们发现,值为1的位(比如从右向左第一位)表示在此位上 a 和 b 的值不同;所以,根据这个特点,我们找出来所有第一位为1的数进行异或,得到的就是 a 或者 b;
第三步:aXORb = a ^ b,假设我们已经找到了 a,根据异或特性,我们知道,b = aXORb ^ a;这样我们就可以找出 b;所以我们只需要循环两次;

已知性质 a ^ b ≤ a + b,当且仅当 (a & b) == 0 时等号成立
当 a ^ b == a + b 时,a ^ b ^ c ≤ a + b + c 成立。
但是当 a ^ b < a + b 时,只有a ^ b ^ c < a + b + c 成立。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值