按位运算符如何比较c中的二进制?

how does the bitwise operator compare the binary in c?

按位运算符如何比较二进制?

long num1 = 22; //00010110
long num2 = 21; //00010101

if ((num1 ^ num2) == 0) {
    printf("its equal\n");
    printf("%li\n", num1);
    printf("%li\n", num2);
}
else {
    printf("not equal\n");
}
    
//$> not equal

^ XOR 运算符是否为每个位执行 for 循环?

这实际上取决于实现,但大多数处理器都有 XOR(又名 EOR)指令。即使是 8 位 CPU 也有一个。

所以不,它不会在编译器级别的每一位上循环。机器代码指令可以在一次调用中处理所有位(对于按位 orandnot 运算符也是如此)。

如果数据类型比寄存器类型宽,编译器可能必须创建一个循环(如果 32 位寄存器机器正在处理 64 位整数,例如 2 调用XOR 将发出指令,但可能不值得循环)