gpt4 book ai didi

c - 这个二进制转十进制的程序是否正确?

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:17 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <math.h>


int main() {
long long int bin;
int dec=0,i;

scanf("%lld", &bin);
for(i=0; bin!=0; i++){
if(bin%10==0 || bin%10==1){
dec+=(bin%10)*pow(2,i);
bin/=10;
}
else {
printf("Invalid Binary number!!\n");
return 0;
}

}
printf("%d\n", dec);


return 0;
}

我制作了这个程序来将二进制转换为十进制。网上有很多代码,但我想知道这段代码一切正常吗?

最佳答案

最好是逐个字符读取,直接转换成机器号。这更清楚地表达了您的意图。

#include <stdio.h>
#include <limits.h>

int main(void)
{
unsigned long long n = 0;
int c;
fputs("enter a number in base 2: ", stdout);
while ((c = getchar()) != EOF && c != '\n') {
if (n >= (ULLONG_MAX >> 1) + 1) {
fprintf(stderr, "binary number is too large\n");
return 1;
}
n <<= 1;
if (c == '0')
n += 0;
else if (c == '1')
n += 1;
else {
fprintf(stderr, "bad binary digit '%c'\n", c);
return 1;
}
}
printf("that number in base 10 is %llu\n", n);
return 0;
}

完全未经测试。负数留作练习(注意:移入有符号整数的符号位会引发未定义的行为)。

关于c - 这个二进制转十进制的程序是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44399439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com