前言
C语言中的位操作符是用来对数据的二进制表示进行位级操作的运算符。这些操作符包括位与(&)、位或(|)、位异或(^)、位取反(~),这些位操作符可以用来进行各种位级操作,如获取二进制表示中的特定位、将特定位设置为0或1、交换变量的值等。它们在底层编程、位级编码和优化算法中经常被使用。今天我就来给大家分享关于位操作符的使用。
1,&
&是按位与操作符可以对两个操作数的二进制表示进行位与操作,首先我们都知道二进制只有数字0和1,那么&是怎么操作的呢?
我们举个例子,下面是8和11的二进制。
8: 1000
11:1011
&叫做按位与,所以我们要按照两个二进制对应的位置进行与操作如8的1对应11的1,0对应0,0对应1,0对应1(我是按从前往后的顺序说的便于理解)。
当某一位都是1的时候,与操作后的结果为1,当一方是1一方是0时,结果为0,当双方都是0时结果还是0,我们可以将其想象成一个串联电路,0和1时开关,当为1时开关闭合电流才能通过。
所以8&11的结果为1000即8
2,|
|是按位或操作符,与&类似,我们再用8和11举个例子
8: 1000
11:1011
当某一位双方都是1时,结果为1,当一方为1一方为0时,结果为1,当双方都是0时,结果为0.这我们就可以想象成一个并联电路,只要开一个开关,电流就能流通。
所以8|11的结果为1011即11
3,^
^是按位异或操作符,我们还是用8和11来举例子。
8: 1000
11:1011
当某一位双方都为1或者都为0时,结果为0,当双方不同(即一个是1一个是0)时,结果为1。即某一位相同时,结果为0,不同时结果为1.
所以8&11的结果为0011,即结果为3。
4,~
~是按位取反操作符,拿1和-1举个例子。
1: 00000000 00000000 00000000 00000001
-1:111111111 11111111 11111111 11111111
取反的意思就是0变1,1变0,所以1和-1按位取反后会分别变成:
1:11111111 11111111 11111111 11111110
-1:00000000 00000000 00000000 00000000
那么我们能发现1 = (-1)+1,-1=(1)+1,这样就可以轻松实现正数和负数的转换了。
尾声
关于位操作符的分享我们就到这里,如果觉得博主讲的不错,千万不要忘记给博主一个关注,点赞,收藏哦~,小伙伴们,我们下期再见!