当前位置: 首页 > news >正文

认识异或运算

1.什么是异或运算

异或运算是位运算的一种,符号为:^
运算规则为:相同为0,不同为1
例如
在这里插入图片描述
性质:

N ^ 0 = N
N ^ N = 0
A ^ B = B ^ A
(A ^ B) ^ C = A ^ (B ^ C)
  • N ^ 0 = N
public class XorOperation {public static void main(String[] args) {System.out.println(zeroXorNonZeroNum(5)); // 5}// 0与非零数异或private static int zeroXorNonZeroNum(int n) {return 0 ^ n;}
}

位与位异或,相同为0,不相同为1,所以b的结果为5


  • N ^ N = 0
public class XorOperation {public static void main(String[] args) {System.out.println(nonZeroXorSelf(5)); // 0}// 非零数与自身异或private static int nonZeroXorSelf(int n) {return n ^ n;}
}

两个相同的数,二进制都是一样的,所以在位与位进行异或的时候都相同,每一位的结果都是0


  • 交换律
public class XorOperation {public static void main(String[] args) {System.out.println(twoNonZeroNumXor(3, 8)); // 11System.out.println(twoNonZeroNumXor(8, 3)); // 11}// 两个非零数异或运算private static int twoNonZeroNumXor(int a, int b) {return a ^ b;}
}

因为异或是位与位进行计算的,所以异或的顺序不重要,结果是一样的


  • 结合律
int a = 2;
int b = 5;
int c = 4;
int d = (a ^ b) ^ c;
int e = a ^ b ^ c;
int f = a ^ (b ^ c);
System.out.println(d == e);	//true
System.out.println(f == e);	//true

通过交换律得知,异或的顺序不会影响结果,所以在某一些数先异或,再异或另个数的时候,也不会影响结果,这就是异或满足结合律

2.异或运算的本质

2.1 2阶异或运算

来看一个例子:
(10进制)5 = (二进制)00000101 (10进制)6 = (二进制)00000110
5 ^ 6 计算过程如下:
在这里插入图片描述
相同为0,不同为1

2.3 3阶异或运算

来看一个例子:
(10进制)5 = (三进制)00000012 (10进制)6 = (三进制)00000020
5 ^ 6 计算过程如下:
在这里插入图片描述
2 ^ 0 = 2,1 ^ 2 = 0

2.4 4阶异或运算

来看一个例子:
(10进制)5 = (四进制)00000011 (10进制)6 = (四进制)00000012
5 ^ 6 计算过程如下:
在这里插入图片描述
1 ^ 2 = 3,1 ^ 1 = 2

2.5 k阶异或运算

3.异或运算的应用

4.总结

http://www.lryc.cn/news/28091.html

相关文章:

  • 内容提供者的简单使用
  • Modelsim 操作结构和流程
  • vue和react有什么不同
  • js求解《初级算法》28. 找出字符串中第一个匹配项的下标
  • VAE--part1
  • 备战四级!!!
  • sizeof与strlen练习
  • 知识图谱的介绍
  • 【Redis】Redis高级客户端Lettuce详解
  • Qt——自定义界面之QStyle
  • 指针和数组面试题(逐题分析,完善你可能遗漏的知识)
  • centos7搭建nfs挂载日志目录完整步骤
  • 三、JavaScript
  • 深圳大学计软《面向对象的程序设计》实验11 多继承
  • 并发变成实战-原子变量与非阻塞同步机制
  • sql数据库常用操作指令
  • 4-1 定时任务的示例10个
  • 外贸建站多少钱才能达到预期效果?
  • 【Java学习笔记】5.Java 基本数据类型
  • InnoDB 死锁和问题排查
  • tensorflow07——使用tf.keras搭建神经网络(Sequential顺序神经网络)——六步法——鸢尾花数据集分类
  • 关于Java连接Hive,Spark等服务的Kerberos工具类封装
  • 大数据框架之Hadoop:MapReduce(五)Yarn资源调度器
  • uniapp实现地图点聚合功能
  • 经典分类模型回顾2—GoogleNet实现图像分类(matlab版)
  • Java经典面试题——谈谈 final、finally、finalize 有什么不同?
  • C#的Version类型值与SQL Server中二进制binary类型转换
  • 软测入门(五)接口测试Postman
  • UWB通道选择、信号阻挡和反射对UWB定位范围和定位精度的影响
  • linux基本功之列之wget命令实战