我的代码可以正常工作到1024年,但是大于1024的值会给出错误的输出,请帮助:

#include<stdio.h>

int main()
{
    int dec,i=1;
    int rem=0;
    long long int result=0;

    scanf("%d",&dec);

    while(dec!=0)
    {
        rem=dec%2;
        result = result +rem*i;

        dec=dec/2;
        i=i*10;

    }
    printf("%I64u",result);

    return 0;
}

最佳答案

该代码应将二进制值累加在一个字符串中。由于这是交叉发布到C和C++的,所以我认为C解决方案是合适的(在C++中,我将使用std::string,并且簿记会更简单):

#include<stdio.h>

int main()
{
int rem=0;
char result[sizeof(long long)*CHAR_BITS+1];
int dec,i=sizeof(result);
result[--i] = '\0';

scanf("%d",&dec);
while(dec!=0)
{
    rem=dec%2;
    result[--i] = rem + '0';
    dec=dec/2;
}
printf("%s",result + i);

return 0;

}

(警告:未经测试)

关于c++ - 输入1024后,将十进制转换为二进制会输出错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58146515/

10-10 00:45