linux C 位运算,flags1 & flags2 任意一位不同就是 0 吗?
作者:互联网
在 C 语言中,位运算符 &
用于逐位与操作。如果 flags1
和 flags2
的任意一位不同,flags1 & flags2
的结果不一定是 0。只有当 flags1
和 flags2
在每一个对应的位上都是 1 时,结果才会是那一位为 1;否则,该位的结果为 0。
如果你想判断 flags1
和 flags2
任意一位是否不同,可以使用异或运算符 ^
,其操作如下:
if (flags1 ^ flags2) {
// flags1 和 flags2 至少有一位不同
}
C
这里的 flags1 ^ flags2
会返回一个数字,如果这个数字不为0,说明 flags1
和 flags2
之间有至少一位不同。
标签: 来源: