#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);
}
二进制转化十进制编程思路
输入字符串,判断字符串中是否有点,也就是需要判断二进制是不是小数。
如果是小数,就将整数部分和小数部分分开求和,如果是整数,直接计算求和即可。