当前位置:网站首页>位运算介绍
位运算介绍
2022-07-07 17:26:00 【华灯初上`】
从雨巨那里学的位运算,来分享一波
什么是位运算?
位运算:位运算是系统所提供的直接对数字的数位进行操作的运算。具体有以下几种操作:
<< 左移运算符
>> 右移运算符
| 或
& 与
~ 取反
^ 异或
系统存储数字是按照二进制存储的,即内存中的每个数字都是由0、1构成的字符串;引入十进制中的进制词(即个、十、百位等,注意,这里只是引用,所描述的对象依然是二进制的0、1字符串),位运算就是直接对处于某些进制上的数字进行改变,举几个例子说明一下:
以下括号中字符串均为二进制,不再予以标注
- (1010)>>1 此操作的意思就是1010右移一位,结果变成了(101);因为第四位的0由于右移被舍去,如果(1010)>>2,结果就是(10),因为最后的10均被舍去。
- (1010)<<1 此操作的意思就是1010左移一位,结果是(10100);多出来的位数补0,十位上的1移到了百位上。
- & 、 | 操作与编程语言中的 || 和 && 操作相同,若都为1则&的结果为1,有一者为1则 | 的结果为1,其余情况结果都为0。如1010 & 0010=0010,1010 | 0010=1010。
- ~ 操作不同于编程语言中的!,此操作是令二进制字符串中的0、1互换,即0变成1,1变成0;如 ~1010 结果为 0101 。
- ^ 异或操作,就是判断两者是不是不一样,不一样的话就是1,一样的话就是0。比如1010 ^ 0011 = 1001。
- 其中,进行异或运算时,任何数异或0不变,任何数异或1就取反。如1010 ^ 1=1011。
- 这里要注意的是,&、|、^操作均为两字符串相对应位置的单个字母的操作,例如:1010 | 1=1011,后者只有一位,至于前者的最后一位进行或运算,前者的前三位不受影响。
位运算的小技巧:
介绍一个位运算的小技巧:
a=a^b;
b=a^b;
a=a^b;问:这三个语句有什么作用?
我们推导一下便知:

可见,语句的作用是交换a,b的值。
位运算的基础操作:
基础的位运算操作很重要,这里列举部分:
- 去掉最后一位:x>>1
- 在最后加一个0:x<<1
- 在最后加一个1:x<<1 + 1(+也可用 | )
- 把最后一位变成1:x | 1
- 把最后一位变成0:(x>>1)<<1 或者 x | 1 - 1
- 最后一位取反:x^1
- 把右数第k位变成1:x | (1<<(k-1))
- 把右数第k位变成0:x & (~(1<<(k-1)))
运算优先级:
在写代码的时候一定要注意运算符的优先级不同可能造成的影响,所以一定要加括号。

边栏推荐
- Matplotlib drawing 3D graphics
- 5billion, another master fund was born in Fujian
- Initial experience of cache and ehcache "suggestions collection"
- ES6 note 1
- LeetCode 497(C#)
- 网易云信参与中国信通院《实时音视频服务(RTC)基础能力要求及评估方法》标准编制...
- How to estimate the value of "not selling pens" Chenguang?
- Flipping Game(枚举)
- L1-027 rental (Lua)
- Kirin Xin'an cloud platform is newly upgraded!
猜你喜欢

多个kubernetes集群如何实现共享同一个存储

谷歌seo外链Backlinks研究工具推荐

从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks

Tips and tricks of image segmentation summarized from 39 Kabul competitions

2022如何评估与选择低代码开发平台?

Experiment 1 of Compilation Principle: automatic implementation of lexical analyzer (Lex lexical analysis)

编译原理 实验一:词法分析器的自动实现(Lex词法分析)

Empowering smart power construction | Kirin Xin'an high availability cluster management system to ensure the continuity of users' key businesses

索引总结(突击版本)

2022.07.02
随机推荐
脑洞从何而来?加州大学最新研究:有创造力的人神经连接会「抄近道」
Numpy——2.数组的形状
ES6 note 1
Jürgen Schmidhuber回顾LSTM论文等发表25周年:Long Short-Term Memory. All computable metaverses. Hierarchical reinforcement learning (RL). Meta-RL. Abstractions in generative adversarial RL. Soccer learn
Seize Jay Chou
Kirin Xin'an with heterogeneous integration cloud financial information and innovation solutions appeared at the 15th Hunan Financial Technology Exchange Conference
50亿,福建又诞生一只母基金
2022.07.02
Specify the version of OpenCV non-standard installation
Mathematical analysis_ Notes_ Chapter 11: Fourier series
POJ 1182: food chain (parallel search) [easy to understand]
LeetCode 515(C#)
cmd命令进入MySQL时报服务名或者命令错误(傻瓜式教学)
Chief technology officer of Pasqual: analog quantum computing takes the lead in bringing quantum advantages to industry
杰理之快速配对,不支持取消配对【篇】
Download from MySQL official website: mysql8 for Linux X Version (Graphic explanation)
AI写首诗
5billion, another master fund was born in Fujian
咋吃都不胖的朋友,Nature告诉你原因:是基因突变了
2022如何评估与选择低代码开发平台?