认识异或运算

news2025/1/18 20:20:52

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)); // 11
        System.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.coloradmin.cn/o/387015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法基础】排序 插入、归并、堆、快速 升序+降序

目录 1.排序 1.1 插入排序 1.2 归并排序 1.3 推排序 1.4 快速排序 1.排序 1.1 插入排序 时间复杂度:O(n)~O(n*n) 空间复杂度:O(1) 稳定 步骤: 1.设第一个元素为有序列。 2.取有序列后面的一个元素。 3.将该元素插入到有序列中的正确位…

【C语言学习笔记】:一维数组指针,二维数组指针

数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element)。数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存。以int arr[] { 99, 15, 100, 888, 252 };为例&am…

Linux | 调试器GDB的详细教程【纯命令行调试】

文章目录一、前言二、调试版本与发布版本1、见见gdb2、程序员与测试人员3、为什么Release不能调试但DeBug可以调试❓三、使用gdb调试代码1、指令集汇总2、命令演示⌨ 行号显示⌨ 断点设置⌨ 查看断点信息⌨ 删除断点⌨ 开启 / 禁用断点⌨ 运行 / 调试⌨ 逐过程和逐语句⌨ 打印 …

C/C++开发,无可避免的多线程(篇二).thread与其支持库

一、原子类型与原子操作 1.1 原子类型与操作介绍 在前一篇博文中,多线程交互示例代码中,给出了一个原子类型定义: // 原子数据类型 atomic_llong total {0}; 那么什么事原子数据类型呢,和c的基础数据类型有什么不同呢&#xff1a…

实验一 Python编程基础

目录 一、实验目标 二、实验内容 1.绘制如下图形 ,一个正方形,内有三个红点,中间红点在正方形中心。 2.使用turtle库绘制如下图形: 3.绘制奥运五环图 4.回文问题 5.身份证性别判别 6.数据压缩 7.验证哥德巴赫猜想 8.使…

JVM常用指令

JVM常用指令1.准备工作2.jps3. jconsole4.jstat5.jstack6.jmap7.jvisualvm工具8.自动dump内存信息1.准备工作 在idea中编写代码 public class JVMTest {Testpublic void test() throws InterruptedException {while (true) {Thread.sleep(1000);System.out.println(123);}} }…

Unity 入门精要01---标准光照模型

本节基础知识结构 基础光照部分 环境光 在标准光照模型中,我们会环境光来代替间接光照 Cambient g amient 我们可以在Windows->Rendering->Lighting->Enviroment进行修改Ambient 的Color 自发光 直接在最后片元着色器输出颜色之前把材质的自发光颜色添…

深圳大学计软《面向对象的程序设计》实验13 运算符重载

A. 三维坐标点的平移(运算符重载) 题目描述 定义一个三维点Point类,利用友元函数重载"“和”–"运算符,并区分这两种运算符的前置和后置运算。 要求如下: 1.实现Point类; 2.编写main函数&a…

关于2023年造林施工、林业设计资质,新办、年审的最新通知!

一、资质类别省林学会本年度开展认定的资质种类包括:造林绿化类(含施工资质、监理资质)、林业有害生物防治类(含防治资质、监理资质)和林业调查规划设计类。二、认定标准资质认定执行以下标准:1.造林绿化施…

边缘计算:万字长文详解高通SNPE inception_v3安卓端DSP推理加速实战

本文是在以下文章的基础上编写,关于SNPE环境部署和服务器端推理可以参考上一篇文章: 边缘计算:万字长文详解高通SNPE inception_v3推理实战_seaside2003的博客-CSDN博客 本文最/关键的是利用SNPE在安卓环境不同的runtimes(CPU/G…

高通 Android10/12 4 6dof Camera+2RGBCamera异常处理经验总结

1 背景:此需求apk距离之前更改时间将近9个月,我们这边原来跟驱动那边对接指令和角度 后续没有改过,测试部说apk cameaid提示信息不正确。 2 原因:因为之前用的1.0基线(Android 10) 后面由于客户功能需求变更&#xff…

进程信号生命周期详解

信号和信号量半毛钱关系都没有! 每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定 义 #define SIGINT 2 查看信号的机制,如默认处理动作man 7 signal SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理…

23届春招结束_分享java岗面试心得

23届春招结束_分享java岗面试心得 从一月10日开始投简历,经历了两个月的面试与学习,成功拿到了12k13薪的国企offer,春招结束了 一、经历秋招,被所谓的金九银十给坑惨了 在秋招的时候,经过网友(美团java岗…

九龙证券|利好政策密集发布,机构扎堆看好的高增长公司曝光

新能源轿车销量和保有量快速增长,带来了充电桩商场的微弱需求。 日前,商务部部长王文涛表明,本年将在落实好方针的一起,活跃出台新方针办法,比方辅导当地展开新能源轿车下乡活动,优化充电等使用环境&#x…

Vue3中的h函数

文章目录简介简单使用参数使用计数器进阶使用函数组件插槽专栏目录请点击 简介 众所周知,vue内部构建的其实是虚拟DOM,而虚拟DOM是由虚拟节点生成的,实质上虚拟节点也就是一个js对象事实上,我们在vue中写的template,最终也是经过…

Unity RectTransform Scale Handler - 如何在Runtime运行时拖动缩放窗口尺寸

文章目录简介变量说明实现光标移入移出鼠标拖动距离Anchor 锚点目标尺寸扩展方向简介 本文介绍如何在Runtime运行时拖动缩放UI窗口的尺寸,如图所示,在示例窗口的左上、上方、右上、左方、右方、左下、下方、右下,分别放置了一个拖动柄&#…

Spring之基于注解方式实例化BeanDefinition(1)

最近开始读Spring源码,读着读着发现里面还是有很多很好玩的东西在里面的,里面涉及到了大量的设计模式以及各种PostProcessor注入的过程,很好玩,也很复杂,本文就是记录一下我学习过程中的主干流程。 在开始我们源码解读…

2023年湖北武汉中级工程师怎么申请?申报渠道有哪些?启程别

2023年湖北武汉中级工程师怎么申请?申报渠道有哪些?启程别 武汉市中级工程师怎么报名?很多人不知道中级职称怎么申请,在哪里申请,那么启程别来告诉大家,启程别是谁,进入百度搜索启程别就知道啦 武汉中级工…

【学习Docker(七)】详细讲解Jenkins部署SpringCloud微服务项目,Docker-compose启动

Jenkins部署SpringCloud微服务项目,Docker-compose启动 座右铭:《坚持有效输出,创造价值无限》 本文介绍使用Jenkins部署SpringCloud微服务项目,Docker-compose启动。 之前写过安装Jenkins的过程,这里就不写安装细节了…

[oeasy]python0099_雅达利大崩溃_IBM的开放架构_兼容机_oem

雅达利大崩溃 回忆上次内容 个人计算机浪潮已经来临 苹果公司迅速发展微软公司脱离mits准备做纯软件公司IBM用大型机思路制作的5100惨败 Commodore 64 既做计算机又做游戏机 计算机行业和游戏行业 跟随着底层技术不断迭代已经进入了战乱纷纷的年代最终又会如何呢&#xff1f…