How does the bitwise operator compare the binary?
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
Does ^ XOR operator do a for loop for each bit?
It really depends on the implementation but most processors have a
XOR(akaEOR) instruction. Even 8-bit CPUs have one.So no it doesn't loop on each bit at compiler level. Machine code instructions can process all bits in one call (also true for bitwise
or,andandnotoperators).The compiler could have to create a loop if the data type is wider than the register type though (if 32 bit register machine is processing 64 bit integers for instance 2 calls to
XORinstruction will be issued, probably not worth a loop though)