gpt4 book ai didi

c - 二进制转十进制的程序

转载 作者:行者123 更新时间:2023-11-30 21:11:43 26 4
gpt4 key购买 nike

我正在练习 C 的基本程序,并尝试进行二进制到十进制的转换。

下面是我尝试过的代码,但它没有产生正确的结果。我不明白我的逻辑哪里出了问题。

/*     binary to decimal     */
#include<stdio.h>
int main()
{
int a,i,p,sum=0;
printf("enter binary number\n");
scanf("%u",&a);
for(i = 0 ; i < 5; i++) /* Taking only 5 digits in binary */
{
if((a & 1<<i))
{
p = 1<<i;
sum = sum +p;
}
}

printf("%d\n",sum);
return 0;
}

我输入了 1001,并期望输出为 9,但输出却是 1001?

最佳答案

scanf("%u",&a); 将读取十进制数字。因此,当您输入 1001 时,二进制形式将为 0011 1110 1001,将此数字转换回十进制后,它将变为 100110。您应该将其作为字符串读取以保留二进制形式

然后您编写的代码仅检查输入值的低 5 位。如果您输入 1001,它将输出 9 作为“预期”,因为 1001 的低位是 01001,即不小心9 相同。正如您所描述的,输出不是 1001。这意味着上面的代码不是您运行的原始代码。如果您输入另一个数字,结果将会不同。例如输入 36 将在输出上打印 4

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

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