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

三种运算符均针对二进制

非!:是一元运算符。对一个二进制的整数按位取反,输入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. Linux中的静态库与动态库

    什么是库文件? 库文件是事先编译好的方法的合集.比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,不需要重新编写. Linux系统中: 1.静态库的扩展名为.a:2. ...

  2. uwp 基础知识

    (TitleId,DiaplayName,args,LogoUri,size); Obj.VisualElements.ShowNameOnSquare150x150Logo = true; if ( ...

  3. 徒手撸一个简单的RPC框架

    来源:https://juejin.im/post/5c4481a4f265da613438aec3 之前在牛逼哄哄的 RPC 框架,底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的 ...

  4. 详解 Interpolator动画插值器

    Interpolator 被用来修饰动画效果,定义动画的变化率.在Android源码中对应的接口类为TimeInterpolator,通过输入均匀变化的0~1之间的值,可以得到匀速.正加速.负加速.无 ...

  5. UVA1620 Lazy Susan(结论证明)

    结论: 当 \(n\geq 6\) 时,若 \(n\) 是奇数且输入序列的逆序对数是奇数,则无解,否则有解. 当 \(n=4\) 或 \(n=5\) 时,答案个数及其有限,只有这个环是 \(1\) 到 ...

  6. 发布日志 - kratos v2.0.5 版本发布

    V2.0.5 Release Release v2.0.5 · go-kratos/kratos (github.com) 修复问题 proto errors when swagger api imp ...

  7. error: object file .git/objects/...

    cd .git find . -type f -empty -delete -print tail -n 2 .git/logs/refs/heads/master git show xxxx(版本号 ...

  8. struts2执行流程和架构图

    一.struts2执行流程 二.架构图 只需要编写黄色部分的代码:

  9. Spring Cloud Gateway 学习+实践

    官网上给出的Spring Cloud Gateway特性如下图所示: 翻译过来就是: 基于 Spring Framework 5 ,Project Reactor 以及 Spring Boot 2.0 ...

  10. webpack learn1-初始化项目1

    使用Visual  Studio Code软件使用准备,先安装一些插件,加快开发效率(还有Language Packs 选择简体中文安装后重启软件,可切换为中文): 下面是项目初始化步骤: 1 软件打 ...