二进制转十进制的算法

如题所述

二进制转十进制
从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案
例如:01101011.转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0+8+0+32+64+0=107.
二进制01101011=十进制107.

java:
System.out.println("输入一个二进制数:");
Scanner sc=new Scanner(System.in);
String src=sc.nextLine();
int sum=0;
int k=0;
for(int i=src.length()-1;i>=0;i--,k++)
{
char s=src.charAt(i);
sum+=Integer.parseInt(String.valueOf(s))*Math.pow(2, k);

}
System.out.println(src+"转换十进制转换二进制为"+sum);
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-27
要从右到左用二进制的每个数去乘以2的相应次方。
例如:二进制数1101.01转化成十进制
1101.01(2)=1*2^0+0*2^1+1*2^2+1*2^3 +0*2^-1+1*2^-2=1+0+4+8+0+0.25=13.25

所以总结起来通用公式为:
abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
第2个回答  2013-11-27
302除以2 = 151 余数为0 151除以2 = 75 余1 75除以2 = 37 余1 37除以2 = 18 余1 18除以2 = 9 余0 9除以2 = 4 余1 4除以2 = 2 余0 2除以2 = 1 余0 注意最后2除以2=1 所以最后的结果加上1 答案等于100101110
第3个回答  2012-03-21
我用的是C:
#include<stdio.h>
void f(int f,int g[],int m)
{
int d,i,l=0;
i=f;
while(1)
{
l++;
if(i>0)
{
d=i%2;
i=i/2;
if(d==0)
g[m-l]=0;
else
g[m-l]=1;
}
else
g[m-l]=0;
if(l>16)
break;
}
}
int main()
{
int a,b,c[16];
printf("please input is a number:\n");
scanf("%d",&a);
f(a,c,16);
for(b=0;b<16;b++)
printf("%d",c[b]);
}
可以的话选我啊本回答被网友采纳
相似回答