按位与和逻辑与,按位异或
按位与是&,逻辑与是&&。举例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/… 逻辑与和按位与、逻辑或和按位或的区别