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);
}
更多推荐
已为社区贡献2条内容
所有评论(0)