认识异或运算的本质与基本规律,0^x=x,x异或x=0,有交换律,结合律,与顺序无关

提示:异或运算系列文章
非常重要的算法技巧:异或运算!!

为了破解以下这些重要的题目:
(2)数组arr中,有一个数k出现了奇数次,其他数出现偶数次,请找到并打印这个数k
(3)如何把一个数字x最右侧那个1拿出来,变成00…10…的格式
(4)如何统计一个数字x中1的个数


文章目录

  • 认识异或运算的本质与基本规律,0^x=x,x异或x=0,有交换律,结合律,与顺序无关
    • @[TOC](文章目录)
  • 异或运算本质是啥?
  • 扩展任意k>=2进制的异或:k进制不带进位的加法
  • k进制异或运算的基本规律
  • 总结

异或运算本质是啥?

不带进位的加法!
先来看二进制异或:就是k=2进制的不带进位加法。

我们有一个异或的口诀:同为0,不同为1
比如11^3=8
即1011^0011=1000
两位碰,同为0,不同为1

那么异或的本质是啥呢?
不带进位的加法!!!

还是上面这例子:

扩展任意k>=2进制的异或:k进制不带进位的加法

【未来,我们会——在高频面试题那,碰到很有代表性的大厂高频题:用k进制异或解决!】
(1)比如说吧,k=4,4进制异或是啥意思呢?一样啊
就是4进制数,它不需要带进位,做加法即可,没啥区别
比如,12332 ^ 21332=33221
【在这你要迅速转换脑子,4进制,0123,代表4进制的取值】
4进制不进位加法就是:4进制异或
2+2=4(10进制的)=10(4进制的),1是进位,不要
3+3=6(10进制的)=12(4进制的),1是进位,不要
2+1=3,就是4进制的3
1+2=3,就是4进制的3

(2)再来一个简单点的,k=3,那取值为012,故整个数x中,最多取2,
比如:2+1=10(10不是十进制的10哦,而是3进制的3,就像二进制10一样,是2进制的2)=3
好请你求3进制异或:
1210^1222=2132
其中:2+0=0
1+2=10,1进位不要
2+2=11,前面那个1进位不要
1+1=2
最后就得到不带进位的加法:3进制异或

现在你明白了2进制的异或了吧,甭管k=23456……
k进制异或就是k进制的不带进位的加法,随意!!!


k进制异或运算的基本规律

不管是k=23456……
异或运算都有一个基本规律:记住了
(1)x^0=x;x异或0就是x本身
(2)x^x=0;x异或x本身是0
(3)异或运算有交换律,结合律,与顺序无关!

怎么理解?
(1)x^0=x;x异或0就是x本身
知道了异或的本质是k进制不带进位加法之后,那就好说了
比如:x=7
7^0=7

(2)x^x=0;x异或x本身是0

(3)异或运算有交换律,结合律,与顺序无关!
7异或0异或7

7异或7异或0

谁跟谁先结合,不影响整体异或结果,只与各个位的数字有关

所以呢?
偶数个x异或=0
奇数个x异或=x
为啥呢?
用上面3条规律:

所以这个关于异或的基础知识,一定要掌握,今后在算法题中有很多用处的!
代码自己验证一下就知道:

//学一些基础的知识public static void baseKnowledge(){//两个数字的异或a^b是每一个加法都不进位的相加//N^0==N,N^N=0;因为不进位加,任何数字与N异或完都是自己,自己异或自己=0,int N = 7;System.out.println(N ^ 0);System.out.println(N ^ N);System.out.println(N^N^N);//奇数次自己异或自己,还是自己!!System.out.println(N^N^N^N);//偶数次异或自己,为0,因为上面那两条铁律!!}

总结

提示:重要经验:

1)异或运算的本质就是k进制不带进位加法!
2)异或有3条规律,x异或0=x,x异或x=0,异或不考虑顺序

认识异或运算的本质与基本规律,0^x=x,x异或x=0,有交换律,结合律,与顺序无关相关推荐

  1. 你管这玩意叫异或运算?

    对于底层开发来说,位运算是非常重要的一类操作.而对于位运算来说,最有意思的,应该就是异或运算(XOR)了. 提到异或运算,很多同学可能首先想到的就是一个经典的,和异或运算相关的面试问题: 给你一个包含 ...

  2. 尼姆博奕 (Nimm Game) 异或运算;

    讲到博弈,不得不讲异或运算, 我真服了 大神了, 怎么会将博弈和二进制联系到一起,  大写的服! 异或运算 ^    原理就是  二进制形式,对于相应的每一位  相同 为0 不同为1 ; 简单理解就是 ...

  3. 异或运算交换两个整数

    异或运算有两个特性: 1.一个数异或本身恒等于0,如5^5恒等于0: 2.一个数异或0恒等于本身,如5^0恒等于5. 基于此,交换操作如下: a=a^b; b=b^a; a=b^a;

  4. [转载] 用Java语言实现对十六进制字符串异或运算

    参考链接: 交换两个字符串,而无需在Java中使用第三个用户定义的变量 前言:好久没有写博客,最近一年感觉真是好忙,各种做不完的工作.相信很多上班族都会有这种感觉.最近对NFC进行写卡操作,需要计算一 ...

  5. 深层神经网络——多层网络解决异或运算

    异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧¬b ...

  6. 常见位操作及运算应用举例:1,C语言中位运算符异或“∧”的作用​​​​​​​2,异或运算的作用3,(与运算)、|(或运算)、^(异或运算)

    1 C语言中位运算符异或"∧"的作用: 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0 ...

  7. java 不用中间变量_java异或运算不使用中间变量交换两个数(Java版)详细分解...

    Java的异或运算^,这个小不点"^"就是Java的异或运算符,其特性如下:真^假=真假^真=真 假^假=假 真^真=假,它却是说明了Java异或运算的基本法则,那就是:只要两个条 ...

  8. 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...

    看到一篇博客,关于一些运算的解析,觉得有用,怕以后找不着,直接复制下来,以备以后学习用 原文链接:https://blog.csdn.net/xiaopihaierletian/article/det ...

  9. (与运算)、|(或运算)、^(异或运算)的本质理解

    按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0;  0&1=0;   1&0=0;    1&1= ...

最新文章

  1. 牛客网(剑指offer) 第五题 用两个栈来实现一个队列
  2. 房东收电费1.5犯法吗_2021年结婚要彩礼犯法吗 2021年不能收彩礼是真的吗
  3. Android------Button 添加声音效果(两种方式)
  4. .NET中变量生存期
  5. REST服务和RESTful API是什么
  6. 计算机网络设计校园网实验报告,计算机网络综合设计性实验报告-校园网网络构建方案设计和实现..doc...
  7. UWP 应用通知Notifications
  8. 可汗学院公开课:线性代数笔记-11-求解三元方程组
  9. 智慧树知到网课中国马克思主义与当代课后所有章节测试答案
  10. 西安市版权申请代理公司怎么选,哪些类型作品受版权保护?
  11. 常用dns114.114.114.114与8.8.8.8的区别
  12. 学习React (3) - 如何用Jumbotron
  13. 基于arduino uno 开发板制作的 智能书包项目
  14. java业界新闻语音播报
  15. python回调函数实例详解_python 简单的例子下详解回调函数
  16. qt自定义类访问ui控件
  17. 基于.Net平台C#的微信网页版API
  18. xubuntu系统中设置上边框隐藏
  19. 大连理工大学计算机学院讲师名单,大连理工大学学科评估排名!附大工a类学科名单...
  20. 网络架构的演进--从胖AP到云AC

热门文章

  1. 洛谷 p2387 [noi2014] 膜fa♂森林 lct维护最小生成树
  2. 牛逼!100多个常用 API 接口整理大全,常用的都有。。
  3. 【考研英语】词汇积累(详细全面,2023最新版)
  4. 自动化测试工程师的发展前景怎么样?好不好?
  5. Python上使用及安装tesseract
  6. Cadence orcad 导出网表(.asc文件)
  7. 并发和多线程(一)并发、进程、线程概念
  8. 【操作系统】进程、线程、协程和并发、并行
  9. 會懷孕的木乃伊~恐怖!! 使木乃伊懷孕的人~更加恐怖!
  10. 永磁同步电机FOC控制之坐标变换:Clarke,Park,IPark,IClarke及算法实现流程