c - 两个二进制数异或的问题

标签 c binary decimal xor

我有一个从 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/

相关文章:

c++十进制转二进制混淆

c : gets() and fputs() are dangerous functions?

c++ - 转换数据包数据的 Python 和 C++ 套接字

c# - 如何使用 EntityFramework 4.1 CodeFirst 防止小数值在保存时被截断为 2 个位置?

java - 用Java读取二进制文件

通过附加两个 int 的二进制表示来创建 double

C++ 不显示带大小数的数字

c++ - 为什么结构的 sizeof 不等于每个成员的 sizeof 之和?

c - 如何在C中显示单词及其在字符串中出现的次数

c - 如何使用 malloc 从函数返回 char 数组