首页 > 编程知识 正文

异或运算的应用,二进制逻辑运算法则

时间:2023-05-05 10:06:17 阅读:16766 作者:1353

异或运算(^ )在java中的应用异或运算法则1. a ^ b=b ^ a

2.a^b^c=a^(b^c )=(a ^ b ) ^ c;

3. d=a ^ b ^ c可以出a=d ^ b ^ c。

4. a ^ b ^ a=b。

异或运算1,异或或数学运算符。 适用于逻辑运算。

2、例如,异或的假结果为真,异或的真结果也为真,异或的真结果为假,假异或的假结果为假。 这意味着两个值不同的结果是真的。

异或的运算方法是二进制运算。

1^1=0

0^0=0

1^0=1

0^1=1

两者相等于0,不相等于1。

总之,这样,n^0=n n^n=0,即任意数与0的异或,只要对两个相同的数进行异或运算,就可以得到0。

 

我前几天看到了这样的主题。 对于具有多个数字的数组,只有一个是唯一的,其他都是成对的。 如何快速找到这个唯一的值? 没听过异或运算的时候,真的很无知。 然后,我在看hashMap的源代码时看到了异或运算符。 搜索一下,就能解决以前看到的这个问题,突然变得明亮了。

int [ ] nu marry=new int [ ] { 1,2,3,2,3 }; int aim=numarry[0]; for(intI=1; i 5; I ) { aim=aim ^ numarry[i]; } System.out.println ()最后) aim ); 关于以上的这个结果是什么,只要知道异或运算的特征就可以。 例如1、2、3、2、3。 既然异或运算满足以上交换规则,对于1^2^3^2^3这样的异或运算,通过改变位置(2) ^ )3) ^1,用2个相同的数进行异或运算,可以得到0

另外,还可以看到以下类似的问题。

1-1000排列成包含1001个元素的数组,只有唯一的元素值重复,其他只出现一次。 数组元素只能访问一次。 设计算法,找到它。 是否可以在不使用辅助存储空间的情况下设计算法实现?

上面的这个也可以用异或运算来求解:

假设:1^2^3……^n…^1000=t

另一方面,1 ^2^3. ^ n ^ n . ^ 1000=t ^ n

我们已经知道T^T^n=0^n=n这个过程。

所以,我们有办法解决上面的问题。

首先从1到1000,对这1000个进行异或运算,然后对上面的1001个进行疑惑运算,最后,对这两个结果进行异或运算,得到唯一的n。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。