c语言中的位运算符
c语言中有位运算符有&、| 、^ 、~ 、>> 、<<(注意:位运算符使用于整数char、short、int、long,不适用于浮点类型)。位运算符是指对数据按二进制位进行运算。
1.&(按位与)
规则如下:
1&1 = 1
1&0 = 0
0&1 = 0
0&0 = 0
例如:13 & 7,首先将13和7转换为二进制分别为 0000 1101,0000 0111。
0000 1101
& 0000 0111
-------------------
0000 0101 所以13&7的结果为5。
再看一个另一个例子: -7 & 44
按照正常思路应该是 1000 0111,0010 1100按位与得到结果为0000 0100换为十进制是
8,**但是二进制在计算机中的的存储方式为补码,所以-7在计算机中用二进制表示为1111
1001,正数的补码与原码相同**,所以正确的结果为(1111 1001)&(0010 1100)= 40
推论:
num & -1 = num;num & 0 = 0