dec to bin的错误

时间:2013-05-10 20:21:09

标签: binary decimal

我一直在调试这个函数,但我不知道为什么当我向函数发送4时它会抛出99。 这是一个从十进制转换为二进制的函数。 实际上,我试图在每个步骤中cout exp,res和其他变量,然后将它们相乘,但我不知道。这没有意义。

int DecToBinary(long num) {
    if(num == 0) {
        return 0;
    }
    else if(num == 1) {
        return 1;
    }
    int exp = 0;
    int res = 0;
    for (; num != 0; exp++){
        res = res+num%2*pow(10,exp);
        num = num/2;
    }
    return res;
}

谢谢你们。

1 个答案:

答案 0 :(得分:0)

if(num == 0) {
    return 0;
}
else if(num == 0) {
    return 1;
}

你知道第二个分支永远不会被执行,对吗?

此外:

pow(10,exp);

这会产生一个浮点数。 为舍入错误做好准备。更好:不要使用pow() (你不需要使用浮点数来处理整数)。只需逐步进行除法,将结果累加到变量中。

int dec2bin(int n)
{
    int r = 0, tp = 1;
    while (n) {
        r += (n % 2) * tp;
        n >>= 1;
        tp *= 10;
    }
    return r;
}