Part Two 位运算符
1. 按位与运算&
1.1 按位与
根据二进制进行按位与&
&这个符号是键盘上5对应的符号,想要输入这个符号同时按住shift和5即可
1.2 运算
1.2.1 运算规则
a | b | a&b | 结论 |
---|---|---|---|
0 | 0 | 0 | 有0则为0 |
0 | 1 | 0 | 有0则为0 |
1 | 0 | 0 | 有0则为0 |
1 | 1 | 1 | 全为1则为1 |
1.2.2 二进制
0101&0100=0100(注:0101、0100均为二进制数)
1.2.3 八进制
47&33=3(注:47、33、3均为八进制数)
1.2.4 十进制
38&93=4(注:38、93、4均为十进制数)
1.2.5 十六进制
784&DBA=580(注:784、DBA、580均为十六进制数)
1.2.6 X进制
先将X进制数转换成二进制数,再进行按位与运算,最后再将结果转换成X进制数
2. 按位或运算|
2.1 按位或
根据二进制进行按位或|
|这个符号是键盘上\对应的符号,想要输入这个符号同时按住shift和*\*即可
2.2 运算
2.2.1 运算规则
a | b | a|b | 结论 |
---|---|---|---|
0 | 0 | 0 | 全为0则为0 |
0 | 1 | 1 | 有1则为1 |
1 | 0 | 1 | 有1则为1 |
1 | 1 | 1 | 有1则为1 |
2.2.2 二进制
0101|0100=0101(注:0101、0100均为二进制数)
2.2.3 八进制
47|33=77(注:47、33、77均为八进制数)
2.2.4 十进制
38|93=127(注:38、93、127均为十进制数)
2.2.5 十六进制
784|DBA=FBE(注:784、DBA、FBE均为十六进制数)
2.2.6 X进制
先将X进制数转换成二进制数,再进行按位或运算,最后再将结果转换成X进制数
3. 按位异或运算^
3.1 按位异或
根据二进制进行按位异或^
^这个符号是键盘上6对应的符号,想要输入这个符号同时按住shift和6即可(英文输入法)
3.2 运算
3.2.1 运算规则
a | b | a^b | 结论 |
---|---|---|---|
0 | 0 | 0 | 二者相同时结果为0 |
0 | 1 | 1 | 二者不同时结果为1 |
1 | 0 | 1 | 二者不同时结果为1 |
1 | 1 | 0 | 二者相同时结果为0 |
3.2.2 二进制
0101^0100=0001(注:0101、0100、0001均为二进制数)
3.2.3 八进制
47^33=74(注:47、33、74均为八进制数)
3.2.4 十进制
38^93=123(注:38、93、123均为十进制数)
3.2.5 十六进制
784^DBA=A3E(注:784、DBA、A3E均为十六进制数)
3.2.6 X进制
先将X进制数转换成二进制数,再进行按位异或运算,最后再将结果转换成X进制数
4. 左移<<
4.1 左移
根据二进制进行按位左移<<
<<这个符号是键盘上,对应的符号,想要输入这个符号同时按住shift和,两次即可(英文输入法)
4.2 运算
4.2.1 运算规则
左移是对一个数进行二进制的移位操作
左移1位可以理解为十进制数的
×
\times
×
2
2
2操作
左移n位可以理解为十进制数的
×
\times
×
2
n
2^n
2n操作
4.2.2 二进制
0101<<1=1010(注:0101、1010均为二进制数)
4.2.3 八进制
47<<1=116(注:47、116均为八进制数)
4.2.4 十进制
38<<1=76(注:38、76均为十进制数)
4.2.5 十六进制
784<<1 = F08(注:784、F08均为十六进制数)
4.2.6 X进制
先将X进制数转换成二进制数,再进行左移运算,(记得低位补0,)最后再将结果转换成X进制数
5. 右移>>
5.1 右移
根据二进制进行按位右移>>
> > >> >>这个符号是键盘上,对应的符号,想要输入这个符号同时按住shift和.两次即可(英文输入法)
5.2 运算
5.2.1 运算规则
右移是对一个数进行二进制的移位操作
右移1位可以理解为十进制数的
÷
\div
÷
2
2
2操作
右移n位可以理解为十进制数的
÷
\div
÷
2
n
2^n
2n操作
5.2.2 二进制
0101>>1= 0010(注:0101、0010均为二进制数)
5.2.3 八进制
47>>1= 23(注:47、23均为八进制数)
5.2.4 十进制
38>>1=19(注:38、19均为十进制数)
5.2.5 十六进制
784>>1 = 3C2(注:784、3C2均为十六进制数)
5.2.6 X进制
先将X进制数转换成二进制数,再进行右移运算,(记得高位补符号位,)最后再将结果转换成X进制数
6. 位运算表
a | b | a&b | a|b | a^b |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
全为1才为1 | 全为0才为0 | 二者相同为0不相同为1 |
7. 写在最后
位运算符的掌握可以为我们做算法题提供新思路。
8. 文档分享
如果您觉得这份关于位运算符的文档还不错,尝试点击分享这份文档给好友吧!
作者 @MythicalCreature
于2020 年 08月 14日重新发布