按位运算符如何比较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 也有一个。
所以不,它不会在编译器级别的每一位上循环。机器代码指令可以在一次调用中处理所有位(对于按位 or
、and
和 not
运算符也是如此)。
如果数据类型比寄存器类型宽,编译器可能必须创建一个循环(如果 32 位寄存器机器正在处理 64 位整数,例如 2 调用XOR
将发出指令,但可能不值得循环)
按位运算符如何比较二进制?
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 也有一个。
所以不,它不会在编译器级别的每一位上循环。机器代码指令可以在一次调用中处理所有位(对于按位 or
、and
和 not
运算符也是如此)。
如果数据类型比寄存器类型宽,编译器可能必须创建一个循环(如果 32 位寄存器机器正在处理 64 位整数,例如 2 调用XOR
将发出指令,但可能不值得循环)