位运算符的用法 ----非(!),与(&),或(|),异或(^)

三种运算符均针对二进制

非!:是一元运算符。对一个二进制的整数按位取反,输入0则输出1,输入1则输出0。

例:

0100	-(4) 	输入
1011 -(11) 输出

与&:二元运算符,两个输入。按位计算。输入都是1则输出1;否则输出0;(一0得0)

通俗来讲两个都是1才是1.否则是0

	0100	-(4)	输入1
1011 -(11) 输入2
& 0000 -(0) 输出

或|:二元运算符,两个输入。按位计算。输入都是1则输出1;否则输出0;(一0得0)

通俗来讲两个只要有一个是1就是1.否则是0

	0100  -(4)	输入1
1011 -(11)输入2
| 1111 -(15)输出

异或^ :二元运算符。并不是独立存在的位运算符,而是组合而成。可以用其他的运算符等价表示(相同为0,不同为1)

异或运算按位比较,当输入的两个位相同时输出0,不相同时输出

通俗来讲两个位相同时输出0,不相同时输出

例:将10101101左5位反转
10101101
11111000 ^
0101101

异或的特性:

1、交换律 可任意交换运算因子的位置,结果不变

如:a^ b==b^a

2、结合律(即(a ^ b) ^ c == a^ (b^c))

3、对于任何数x,都有x^ x=0,x^0=x,同自己求异或为0,同0求异或为自己

4、自反性 A ^ B ^ B = A ^ 0 = A ,连续和同一个因子做异或运算,最终结果为自己

5、一个数同自己进行偶数次异或运算结果为0、

一个数同自己进行奇数次异或运算结果为本身。

用处

判断奇偶数

7&1==1;判断是否为奇数

7&1==0;判断是否为偶数

图解:


进行两数互换

int a=5;
int b=10;
a=a^b^(b=a);
输出后a=10,b=5

自主进行图解,加深理解,知识不是看会的是动手学会的!!!

如果还有实用的用处,请各路大佬留个言,求求求

随机推荐

  1. Java String 综述(上篇)

    摘要: Java 中的 String类 是我们日常开发中使用最为频繁的一个类,但要想真正掌握的这个类却不是一件容易的事情.笔者为了还原String类的真实全貌,先分为上.下两篇博文来综述Java中的S ...

  2. rabbitMq消费死循环

    消费过程发生错误容易造成死循环 1.控制重发次数 2.try+catch+手动ack 3.try+catch+手动ack+死信队列(重试次数就失效了,因为捕捉确认后被打入了相应的死信队列) void ...

  3. 微信小程序从入门到实践(一)-设置底部导航栏

    微信小程序最多能加5个导航图标.因为我们只有两个默认页面,这里我们就添加两个导航图标 先看我们要达到的就是这么一个效果 接下来开始实践: (1)准备工作 找几个图标,将上述起好名字的图标 保存到 小程 ...

  4. Learning to Compare: Relation Network for Few-Shot Learning 论文笔记

    主要原理: 和Siamese Neural Networks一样,将分类问题转换成两个输入的相似性问题. 和Siamese Neural Networks不同的是: Relation Network中 ...

  5. Leetcode 146. LRU 缓存机制

    前言 缓存是一种提高数据读取性能的技术,在计算机中cpu和主内存之间读取数据存在差异,CPU和主内存之间有CPU缓存,而且在内存和硬盘有内存缓存.当主存容量远大于CPU缓存,或磁盘容量远大于主存时,哪 ...

  6. HDD成都站:HMS Core 6.0带来新可能 多元服务驱动产品商业成功

    9月10日,由华为开发者联盟主办的HDD(Huawei Developer Day)于成都举行.活动中,华为HMS Core各领域专家重点解读了HMS Core 6.0为开发者带来的多项全新能力,及生 ...

  7. 代码注释规范之Doxygen

    1.Doxygen简介 Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间.当然这里程序中的注释需要遵循一定的规则书写,才能让 ...

  8. ysoserial CommonsColletions7分析

    CC7也是一条比较通用的链了,不过对于其原理的话,其实还是挺复杂的.文章如有错误,敬请大佬们斧正 CC7利用的是hashtable#readObject作为反序列化入口.AbstractMap的equ ...

  9. Java Web实现登录验证码(Servlet+jsp)

    1.生成验证码图片(Servlet) import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import j ...

  10. KMP算法解决字符串匹配问题

    要解决的问题 假设字符串str长度为N,字符串match长度为M,M <= N, 想确定str中是否有某个子串是等于match的.返回和match匹配的字符串的首字母在str的位置,如果不匹配, ...