c++二进制转化十进制代码(小数)
#include <bits/stdc++.h>
using namespace std;
int mid;
double er_shi(string a){int lena;double sum=0;int p=0;int q=-1;int yn=1;//判断是否小数 lena=a.length();//字符串长度 for(int i=0;i<lena;i++){if(a[i]=='.'){mid=i;yn=0;break;} }if(yn==0){for(int j=mid-1;j>=0;j--){sum=sum+double(a[j]-48)*pow(2,p);p++;}for(int j=mid+1;j<lena;j++){sum=sum+(a[j]-48)*pow(2,q);q--;}}else{for(int j=lena-1;j>=0;j--){sum=sum+double(a[j]-48)*pow(2,p);p++;}} return sum;
}void shi_er(int a){int arr[32];int i=0; while(a){arr[i]=a%2;a=a/2;i++;} for(int j=i-1;j>=0;j--){cout<<arr[j];}
} int main(){int n;cin>>n;shi_er(n);
}
二进制转化十进制编程思路
输入字符串,判断字符串中是否有点,也就是需要判断二进制是不是小数。
如果是小数,就将整数部分和小数部分分开求和,如果是整数,直接计算求和即可。