我有一个由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;
}
pow(2, i)
,请改用1L << i
。 - phuclv