位运算符的用法 ----非(!),与(&),或(|),异或(^)
位运算符的用法 ----非(!),与(&),或(|),异或(^)
三种运算符均针对二进制
非!:是一元运算符。对一个二进制的整数按位取反,输入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
自主进行图解,加深理解,知识不是看会的是动手学会的!!!
如果还有实用的用处,请各路大佬留个言,求求求
随机推荐
- Mooc中国大学Python学习笔记--数字类型及操作
整数类型 只需知道整数无限制,pow(),4进制表示形式 与数学中整数的概念一致 --可正可负,没有取值范限制 --pow(x,y)函数:计算x^y,想算多大算多大 -十进制:10 -二进制,以0b或 ...
- Linux centos 安装 tomcat 7
一.tomcat 下载 1.官网下载 如下图点击第1个步骤,第2个步骤右键复制链接地址 # 到linux 下执行下载命令 wget http://mirrors.shu.edu.cn/apache/t ...
- 写webpack插件报警告Tapable.plugin is deprecated. Use new API on .hooks instead解决方案,webpack4插件新写法
最近写了个小插件报了个警告,然后去百度了一下,全都给我说extract-text-webpack-plugin这个插件有问题要更新,我也是无语了,这个插件我用都没用,百度翻了下齐刷刷全是这个答案,搞得 ...
- 真实机中安装CentOS
前言 最近在b站上看了兄弟连老师的Linux教程,非常适合入门:https://www.bilibili.com/video/BV1mW411i7Qf 看完后就自己来试着玩下,正好手上有台空闲的电脑就 ...
- 阿里云服务器上部署java项目(安装jdk,tomcat)
安装JDK a.执行下面的yum指令安装,无线配置环境变量. 1.yum -y update #首先更新一下YUM源2.yum list Java* ---------#列出所有的JDK 3.yum ...
- 一键备份公众号的所有文章到PDF,再也不用担心想看的文章被删了
有的时候,我们会发现收藏的某个微信公众号文章会被删或者和谐了,尤其是对自己非常实用的文章,一定会后悔当初怎么没有复制或者备份下来. 单篇的公众号文章要备份,随便百度一下就能找到非常多方法,这里就不多废 ...
- python 并行计算
一.进程和线程 原文链接:https://zhuanlan.zhihu.com/p/356220352 进程是分配资源的最小单位,线程是系统调度的最小单位.当应用程序运行时最少会开启一个进程,此时计算 ...
- 使用ogr裁剪矢量数据
使用ogr裁剪矢量数据 由来: 近期有个需求,内容是这样的:我们有两个矢量数据,现在要求以一个矢量文件为底板,按字段对另一个矢量文件进行分割,生成若干小的shpfile文件 分析: 经过分析之 ...
- C# Equals方法和==有什么区别
开发工具:VS2019 一.关于这两个比较,需要从值类型和引用类型两方面来说 (A)先说值类型 上图: 因为在对值类型进行比较时候,不管 .Equals() 方法还是 == 方法,都是对值类型变量(图 ...
- VUE004. provide与inject的使用(祖先组件隔多层传静态值给子孙组件)
provide和inject可以通过祖先组件隔三层四层甚至隔着九层妖塔传值给子孙组件. 需要注意的是这样的传值方式是非响应式的,需要结合自身的应用场景,比如将上传的限制条件通过父组件传值给子组件的子组 ...