在Leetcode刷Single Number这道题的时候,自己的想法就是遍历,想了下别的简便想法,楞是没想出,看了下讨论区的大手的,发现了使用XOR,于是想着补补门阵列了。

Given a non-empty array of integers, every element appears twice except for one. Find that single one.

Example 1:

Input: [2,2,1]  Output: 1

异或运算符(^)

参加运算的两个数据,按二进制位进行“异或”运算  。

运算规则:0^0=0;  0^1=1;  1^0=1;   1^1=0;即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

“异或运算”的特殊作用:

(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。

例:X=10101110,使X低4位翻转,用X ^0000 1111 = 1010 0001即可得到。

(2)与0相异或,保留原值 ,X ^ 00000000 = 1010 1110。

其他规律有:

(1)将两数异或的结果与其中一数再进行异或,可以得到另一个数。

例:11^01=10 ; 11^10=01

原理很简单,两数异或的结果保存了两个数上每一个二进制位不同或相同的信息,如果相应的二进制位不同,就标志为1,如果相同,则标志为0。

我们可以利用这个特点交换两个数:

temp=a^b;
a=temp^a;
b=temp^b;

但是使用这种方法似乎与使用临时变量没有什么区别?其实不然,通过简单分析可以发现临时变量的值在整个过程中并没有发生变化,因此也可以无需设置临时变量。

a=a^b^a;
b=a^b^b;

a=a^b;
b=b^a;
a=b^a;

还可以写得更简洁一点:

a^=b^=a^=b;

还可以通过加减实现两数互换:

a=a+b
b=a-b;
a=a-b;

前提是a+b的值不能溢出。

(2)一个数与另一个数异或两次是其本身

8^9^9=8

按位与运算符(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0;  0&1=0;   1&0=0;    1&1=1;

即:两位同时为“1”,结果才为“1”,否则为0

例如:3&5  即 0000 0011& 0000 0101 = 00000001  因此,3&5的值得1。

另,负数按补码形式参加按位与运算。

“与运算”的特殊用途:

(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

(2)取一个数中指定位

方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。

例:设X=10101110,取X的低4位,用 X & 0000 1111 = 00001110 即可得到;

还可用来取X的2、4、6位。

(3)保留指定位

与一个数进行“按位与”运算,此数在该位取1.

例如:有一数84,即01010100,想把其中从左边算起的第3,4,5,7,8位保留下来

01010100

&

00111011

—————
00010000

(4) 取余操作

key % M = key & (M-1)

11 % 8 = 3

1011 & 0111 = 0011 = 3

按位或运算符(|)

参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0|0=0;  0|1=1;  1|0=1;   1|1=1;

即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3|5 即 00000011 | 0000 0101 = 00000111  因此,3|5的值得7。 

另,负数按补码形式参加按位或运算。

“或运算”特殊作用:

(1)常用来对一个数据的某些位置1。

方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

例:将X=10100000的低4位置1 ,用X | 0000 1111 = 1010 1111即可得到。

https://blog.csdn.net/xhmj12/article/details/81114436

https://blog.csdn.net/xiaopihaierletian/article/details/78162863

布尔运算 : ^(异或运算XOR)、(与运算AND)、|(或运算OR)、 、~(非门NOT)相关推荐

  1. labview实现异或运算_异或运算 XOR 教程

    大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要. 本文介绍异或运算的含义 ...

  2. java 异或无符号计算器_xor运算(xor异或计算器)

    先把 21 和 2转换为 二进制 然后各个位计算异或1 xor 1=0 1 xor 0=1 0 xor 1=1 0 xor 0=0 最后的结果就是21xor2的结果 Xor 运算符 对两个表达式进行逻 ...

  3. XOR World(异或运算)

    时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 Let f(A,B) be the exclusive OR of A,A+1,-,B. Find f(A,B). Wh ...

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

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

  5. 加减法叫做什么运算_期中备考:数学运算定律、法则与顺序

    很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...

  6. python 中m op n运算_Python数字类型、数值运算操作符、数值运算函数

    一.数字类型 (一)整数类型int(integer) int与数学中的整数概念一致 特点:可正可负,没有取值范围 整数有四种表示形式: 十进制,没有引导符号:10, 88,-485 二进制,以0(零) ...

  7. 移位运算与除法、取模运算

    0. 整除与取模 xmody=x−y⋅⌊x/y⌋ x\mod y=x-y\cdot \lfloor x/y\rfloor 1. 应用 求一个数二进制形式 1 出现的次数: int bitCount(i ...

  8. 分数混合运算简便方法_分数混合运算和简便运算

    作业内容 教学内容 : 分数混合运算和简便运算. 教学目标 : 1.通过创设自主探究,尝试迁移.合作交流的探究情境,掌握分数混合运算和简便运算. 2.在观察.迁移.尝试练习.交流反馈等活动中,培养学生 ...

  9. c语言字符怎么运算,c语言运算符号(c语言如何输入运算符号)

    C语言运算符都有那些!各个运算符表示什么,怎么排列麻烦各位老师下,谢. 运算符的种类C语言的运算符可分为以下几类: 1.算术运算符 用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余( ...

最新文章

  1. SOLO: 按位置分割对象
  2. wordpress漏洞_技术派 | 漏洞分析:WordPress 5.0 RCE(CVE-2019-6977)
  3. 虚拟机VMware安装Kali Linux
  4. CCNP-1 EIGRP基本配置(BSCI)
  5. git 客户端查看不同分支的文件
  6. 全球及中国抗水解剂市场需求容量与投资可行性研究报告2022年
  7. 物流行业应用虚拟化解决方案
  8. jar打包 jar line too long 异常处理方法
  9. 苹果CMSv10黑金色自适应网站模板
  10. mapreduce工作流程_我要进大厂之大数据MapReduce知识点(2)
  11. 等保2.0标准下,测评中重点关注的内容
  12. 抖音上热门的六大规律
  13. Office 2013 论文排版心得
  14. 个人微信支付宝接入GOGO支付免签系统详细教程(图文)
  15. (Amazon)亚马逊GIF动态验证码识别,95识别率
  16. php mysql 金钱_PHP实现货币换算的方法
  17. 完美解决“未能装载Office文档控件。请使用Internet Explorer(6.0+)浏览器并检查浏览器的安全设置。”的方案
  18. latex添加bibtex参考文献方法及pdf没有参考文献问题
  19. java mediator_Java 实现中介者(Mediator)模式
  20. 达梦数据库自动备份,DM8设置自动备份,达梦数据库,自动备份。详细步骤。常用命令,启动关闭数据库,查看DMAP状态

热门文章

  1. 摄影光学与镜头pdf_北京电影学院摄影专业系列教材:摄影光学与镜头
  2. jop怎么读音英语怎么说_job是什么意思_ job的翻译_音标_读音_用法_例句_爱词霸在线词典...
  3. 【松岩盘前视点】2019-9-11
  4. GridView常见问题
  5. 511遇见易语言计次循环首九九乘法表
  6. 什么是 NFT 洗盘交易:洗盘交易背后的原理
  7. 学习笔记:全局变量定义“无须”初始化,局部变量必须初始化
  8. python基础知识整理一
  9. 15、TWS API和IB中的期权相关的操作
  10. 和谐,就是把人性上升为制度