按位与和逻辑与,按位异或的讲解

173 阅读1分钟

按位与和逻辑与,按位异或

按位与是&,逻辑与是&&。举例0xAA&0XF0=0XA0,0XAA&&0XF0=1

按位与“&”

按二进制位对应的位进行与运算,对应位都为1时,结果才为1(同理按位或,对应位只要有一个为1,结果就为1)

3&5
3的二进制:   00000000000000000000000011 //32位系统中
5的二进制:   00000000000000000000000101 //32位系统中
按位与的结果:00000000000000000000000001

逻辑与“&&”

“&&”运算符两边的式子只有都是真,整个逻辑表达式的值才是真(即为1),否则整个逻辑表达式的值就是假(即为0)。

int main()
{
      int a = 3;
      int b = 5;
      int c = a&&b;     
      
      printf("%d\n", c);
      return 0;
}
//运行结果:1

异或运算

将两个数用二进制表示,进行异或运算,两个二进制数不同则为1,相同则为0.该方法被广泛用来统计一个数的1的位数

0 ^ 0 = 0 ,  
0 ^ 1 = 1,  
1 ^ 0 = 1 ,  
1 ^ 1 = 0 ,

按位异或的几个常见用途:

  • 使某些特定的位翻转。例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。
    10100001^00000110 = 10100111

参考引用:blog.csdn.net/nanZhaiXiao… 按位异或运算符、左右移 blog.csdn.net/cyrilcloud/… 逻辑与和按位与、逻辑或和按位或的区别