C语言————二进制转十进制

<思路>

把输入的二进制数按照从低到高的次序依次输出,且每一次都乘以相应的位权

//(所谓位权数中每一固定位置对应的单位值称为位权。例如十进制第一位位权为0,第2位的位权为10,第3位的位权为100;而二进制第一位位权为0,第2位的位权为2,第3位的位权为4,第四位位权为8;对于 N进数,整数部分第 i位的位权为N^(i-1),而小数部分第j位的位权为N^-j。


举个例子:【将二进制数1101转化成十进制数】

1101=1*2的零次幂+0*2的一次幂+1*2的二次幂+1*2的三次幂

注:从最低位开始计算(最右边计算最低位),依次往左边的高位计算再累加。


①首先完成从低到高的次序输出:即每一次输出都应该从二进制数的最低位(最右边的数输出)

方法是:n%10;

②每一次都乘以相对应的位权:由于二进制的位权是以二次幂往上增加,所以每一次都应该将所求得的最后一位乘以对应的位权2;

③由于是从低位到高位依次输出该二进制数n,所以数字应该往前移动

方法是:n/10;

看下面的程序吧!

#include<stdio.h>
void main()
{   int n,sum=0,p=1          //n为二进制数,sum为每一位计算所加的和,p为位权
    scanf("%d",&n);          //输入该二进制数
    while(n)               //循环条件为n,即二进制数n在不为0的时候程序一直成立
     { sum+=(n%10)*p;       //数字中所有位乘以本位的位权再加和
       p*=2;                //位权随着位的变化依次增加
       n/=10; }             //进行下一位的输出

printf("%d\n",sum);

}

  • 42
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
引用[1]:这段代码是一个C语言程序,用于将二进制的字符串换为十进制的整数。它定义了一个函数bintodec,该函数接受一个二进制字符串作为参数,并返回换后的十进制整数。在函数内部,它使用了一个循环来遍历二进制字符串的每个字符,并根据字符的值计算出对应的十进制数。最后,它将所有的十进制数相加得到最终的结果。在主函数中,它首先接受用户输入的二进制字符串,然后调用bintodec函数将其换为十进制数并输出结果。[1] 引用[2]:这段代码是另一个C语言程序,用于将二进制换为十进制整数。它首先接受用户输入的二进制数的长度,然后接受用户输入的二进制数。接下来,它使用一个循环来遍历二进制数的每一位,并根据位的位置和值计算出对应的十进制数。最后,它将所有的十进制数相加得到最终的结果并输出。[2] 引用[3]:在实际开发中,我们可以使用0和1的字符串来表示信息。例如,某个设备有八个传感器,每个传感器的状态用1表示正常,用0表示故障,可以用一个二进制字符串来表示它们的状态。而将二进制换为十进制数可以帮助我们更好地理解和处理这些信息。[3] 问题: 如何在C语言中将二进制换为十进制数? 回答: 在C语言中,可以使用不同的方法将二进制换为十进制数。一种方法是使用循环遍历二进制数的每一位,并根据位的位置和值计算出对应的十进制数,然后将所有的十进制数相加得到最终的结果。另一种方法是使用字符串处理函数,将二进制字符串换为十进制整数。以上引用的两段代码分别展示了这两种方法的实现。你可以根据自己的需求选择其中一种方法来进行二进制十进制的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想吃荔枝_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值