我的代码在 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/