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

三种运算符均针对二进制

非!:是一元运算符。对一个二进制的整数按位取反,输入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. 多个jar包合并成一个jar包的办法
  2. MySql事务概述
  3. linux——常用命令与脚本
  4. JQuery Mobile入门——设置后退按钮文字(转)
  5. MVC UpdateModel的未能更新XXXXX的类型模型
  6. JVM中的垃圾收集算法和Heap分区简记
  7. Ext 初级UI设计
  8. CodeIgniter连接数据库及快速入门
  9. [转]慎用InputStream的read()方法
  10. 【netlimiter】的使用
  11. bzoj 5301: [Cqoi2018]异或序列 (莫队算法)
  12. pydev+Eclipse搭建教程
  13. 【移动端】解决fixed定位闪动问题
  14. split-brain 脑裂问题(Keepalived)
  15. python - class类 (一)
  16. Java基础——反射
  17. 华为云Istio服务网格,让应用治理智能化、可视化
  18. spring-boot+quartz的CRUD动态任务管理系统
  19. JVM学习笔记(二):垃圾收集
  20. CXF 调用方式——动态创建客户端(调用稳定版本号为2.7.18)

热门文章

  1. 【权限管理】Apache Shiro和Spring Security的对比
  2. 【java虚拟机】内存分配与回收策略
  3. 【springcloud】Eureka服务注册中心搭建
  4. 使用volatile的条件
  5. 寻找最短路径Dijkstra算法
  6. SpringSecurity入门
  7. VS Code 1.60 发布!竟然可以自动检测编程语言了!
  8. java基础之反射类型Type
  9. list类型数据的操作指令
  10. Identity角色管理二(显示角色)