异或^规律总结

您所在的位置:网站首页 9D9D异或密钥 异或^规律总结

异或^规律总结

2023-07-16 00:34| 来源: 网络整理| 查看: 265

异或^ 1、异或介绍2、异或的简单使用

1、异或介绍

       我们知道,异或是通过比较二进制位的值,相同位0,不同为1,根据此特性,我们可以发现以下规律:

结合律 (a ^ b) ^ c = a ^ (b ^ c);交换律 a ^ b = b ^ a;

对于一个数a来说:

异或自己的结果为0:a ^ a = 0;异或0的结果还是自己本身:a ^ 0 = a;异或-1的结果为自身的值按位取反值:a ^ -1 = ~a异或1的结果有两种: 如果本身是奇数,那么异或1之后得到的结果必然为偶数;如果本身是偶数,那么异或1之后得到的结果必然为奇数 两个数异或的结果去异或其中一个数,其结果一定是另一个数 2、异或的简单使用

       根据以上结论,我们来简单的做几个题测试一下它的作用。

第一题:使用异或判断一个数的奇偶性 题目分析: 根据前面的结论,异或1的结果只有两种,要么为奇数,要么为偶数;由这一结论我们可以让当前数异或1之后的结果去取余2,就能得出结果。 public static void main(String[] args) { int num = 8; if((num^1)%2==0){ System.out.println(num+"是奇数"); }else{ System.out.println(num+"是偶数"); } } 第二题:不使用第三方变量交换两个数 题目分析: 根据前面的结论,两个数异或的结果去异或其中一个数,其结果一定是另一个数由此我们可以得出: int n1=8,n2=4; System.out.printf("交换之前:a=%d,b=%d\n",n1,n2); n1 = n1^n2;//12 n2 = n1^n2;//8 n1 = n1^n2;//4 System.out.printf("交换之后:a=%d,b=%d",n1,n2); 第三题:找出1-1001中唯一成对的数,不能使用辅助空间,每个数据只能访问一次 题目分析: 根据前面的结论,异或自己的结果为0,异或0的结果为自己,所以我们只需要异或1-1001,再拿这个结果去异或1-1001包含重复数据的数 //定义数组的长度 int N = 11; //初始化数组 int arr[] = new int[N]; //初始化数组元素 0-9 (value:1-10) for(int i=0;i // 0-10 System.out.println(x+"^"+i+"="+(x^i)); x ^= i; } for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3