我有一个从 0 到 16 的数字列表,我想用 0110 对它们的二进制形式进行异或。
我已将数字放在 int j 中,并将通过一个循环到达每个数字。以下是我的代码行。
j2 = j^(binaryToDecimal(0110));
但是,我无法得到我想要的结果。例如 0 XOR 0110 给我的结果是 16 而不是 0110B = 6。 我在这里错过了什么?
如果需要,这是我的二进制到十进制代码:
long binaryToDecimal(long n) {
int remainder;
long decimal = 0, i=0;
while(n != 0) {
remainder = n%10;
n = n/10;
decimal = decimal + (remainder*pow(2,i));
++i;
}
return decimal;
}
最佳答案
您的代码的问题在于,当您将“0110”作为参数传递时,编译器会将其视为八进制数,即 0110 ==> 72(十进制)。
相反,在参数中传递“110”。你会得到预期的结果。
关于c - 两个二进制数异或的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43038881/