我的代码可以正常工作到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/