按位运算符

文章如有纰漏、欢迎指正!!

按位运算符的基本运算

~取反 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

posted @ 2023-11-29 21:33  囫囵吞桃  阅读(26)  评论(0)    收藏  举报  来源