二进制与十进制的转换在理解了其转换方式之后就会变得很简单:
比如1011(二进制)=1*2^(4-1)+0*2^(3-1)+1*2^(2-1)+1*2^(1-1)=11(十进制)
也就是说我们只需提取该二进制数有多少位数即可进行转换,代码如下:
#include <stdio.h>
#include <math.h>
using namespace std;
int main(){
int ttt(int k,int l);
int a;
int n;
printf("请输入一个二进制数:");
scanf("%d",&a);
float i;
int m;
for(i=0;i<=10000;i++){
m=pow(10,i);
if(a/m==0){
n=i;
break;
}
} //计算这个二进制数的位数
int t=ttt(a,n);
printf("转换后的十进制数为:%d",t);
return 0;
}
int ttt(int k,int l){
int temp=0;
int a,i,v=0,c=0;
for(i=l;i>=1;i--){
v=pow(10.0,i);
c=pow(10.0,i-1);
a=k%v/c; //取每一位上的数字 ,比如101=1*2^(3-1)+0*2^(2-1)+1*2^(1-1)=5,其中取1,0,,1进行计算
temp+=a*pow(2.0,i-1); //计算十进制数
}
return temp;
}
其他进制数与十进制数的转换也可以参照这个方式进行编写,比如十六进制转换十进制。
另外值得注意的是,因为16进制数包含字母所以需要用到字符数组进行编写,请注意在编写时一定要弄清楚字符数组中的数字应是‘0’而不是0,请在编写时注意问题。
此种方法仅为初学者提供一些简单思路,不足之处还请多多海涵。