按位运算符
文章如有纰漏、欢迎指正!!
按位运算符的基本运算
~取反 0变1 1变0
&与 同为1则1
|或 一个为1则1
^异或 仅一个为1则1
前期介绍:
上面是对于一位二进制1和0的运算规则,对于多位如八位二进制数,运算则是相同位进行按位运算操作
如:01000000&10111011==11111011
两个数第一位与第一位按位运算,第二位与第二位按位运算。
掩码:一个二进制数 用于对于某个二进制数字特定的位进行操作
例如00000001可用于对1号位进行操作
掩码之所以叫掩码 是因为它的0好像一层不透明膜 1好像一层透明膜 通过&运算让这个膜覆盖在一个二进制数上 掩码为0就一定为0 掩码为1就看原来那个二进制数是0还是1
操作:
1.打开特定位:
如:打开1号位 让一个掩码为(00000001)
对于二进制数10100000
只要让它|=(00000001) 就可以让它得1号位变为1 如果1号位本来就是1 则仍为1
2.关闭特定位
如:关闭1号位 让一个掩码为(00000001)
对于二进制数10100001
只要让它&=~(00000001)就可以让1号位变为0 如果1号位本来就是0 则仍为0
3.切换特定位
如:切换1号位 让一个掩码为(00000001)
对于二进制数01010001
只要让它^=(00000001) 就可以将1号位切换为0
对于二进制数01010000
只要让它^=(00000001) 就可以将1号位切换为1
4.检查特定位
如:检查二进制数01010010的2号位是否为1 则让一个掩码为00000010
可用下面的式子来判断
(01010010&00000010)==00000010
二进制数 掩码 掩码
检查检查二进制数01010010的3号位是否为0 则让一个掩码为00000100
可以将该二进制数取反 再判断3号位是否为1
即
(~01010010&00000100)==00000100
二进制数 掩码 掩码
左移和右移
左移:
a << n
对于一个二进制数a 将其所有位向左移n位 末端值丢失 空出的位置0补上 相当于乘以2^n
右移:
a >> n
对于一个二进制数a 将其所有位向右移n位 末端值丢失 空出的位置0补上 相当于除以2^n
C语言可以存储十六进制数,以0x开头 如0xff为11111111即255
输入和输出对应的符号为%x
下面是十进制、二进制、十六进制对应表,方便参考:
|
十进制数 |
二进制数 |
十六进制数 |
|
0 |
0000 |
0 |
|
1 |
0001 |
1 |
|
2 |
0010 |
2 |
|
3 |
0011 |
3 |
|
4 |
0100 |
4 |
|
5 |
0101 |
5 |
|
6 |
0110 |
6 |
|
7 |
0111 |
7 |
|
8 |
1000 |
8 |
|
9 |
1001 |
9 |
|
10 |
1010 |
a |
|
11 |
1011 |
b |
|
12 |
1100 |
c |
|
13 |
1101 |
d |
|
14 |
1110 |
e |
|
15 |
1111 |
f |

浙公网安备 33010602011771号