位运算符的用法 ----非(!),与(&),或(|),异或(^)
位运算符的用法 ----非(!),与(&),或(|),异或(^)
三种运算符均针对二进制
非!:是一元运算符。对一个二进制的整数按位取反,输入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
自主进行图解,加深理解,知识不是看会的是动手学会的!!!
如果还有实用的用处,请各路大佬留个言,求求求
随机推荐
- Linux中的静态库与动态库
什么是库文件? 库文件是事先编译好的方法的合集.比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,不需要重新编写. Linux系统中: 1.静态库的扩展名为.a:2. ...
- uwp 基础知识
(TitleId,DiaplayName,args,LogoUri,size); Obj.VisualElements.ShowNameOnSquare150x150Logo = true; if ( ...
- 徒手撸一个简单的RPC框架
来源:https://juejin.im/post/5c4481a4f265da613438aec3 之前在牛逼哄哄的 RPC 框架,底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的 ...
- 详解 Interpolator动画插值器
Interpolator 被用来修饰动画效果,定义动画的变化率.在Android源码中对应的接口类为TimeInterpolator,通过输入均匀变化的0~1之间的值,可以得到匀速.正加速.负加速.无 ...
- UVA1620 Lazy Susan(结论证明)
结论: 当 \(n\geq 6\) 时,若 \(n\) 是奇数且输入序列的逆序对数是奇数,则无解,否则有解. 当 \(n=4\) 或 \(n=5\) 时,答案个数及其有限,只有这个环是 \(1\) 到 ...
- 发布日志 - kratos v2.0.5 版本发布
V2.0.5 Release Release v2.0.5 · go-kratos/kratos (github.com) 修复问题 proto errors when swagger api imp ...
- error: object file .git/objects/...
cd .git find . -type f -empty -delete -print tail -n 2 .git/logs/refs/heads/master git show xxxx(版本号 ...
- struts2执行流程和架构图
一.struts2执行流程 二.架构图 只需要编写黄色部分的代码:
- Spring Cloud Gateway 学习+实践
官网上给出的Spring Cloud Gateway特性如下图所示: 翻译过来就是: 基于 Spring Framework 5 ,Project Reactor 以及 Spring Boot 2.0 ...
- webpack learn1-初始化项目1
使用Visual Studio Code软件使用准备,先安装一些插件,加快开发效率(还有Language Packs 选择简体中文安装后重启软件,可切换为中文): 下面是项目初始化步骤: 1 软件打 ...