问题:输入小数,即输入的小数小于1,转化为二进制代码输出;
实例1:
输入:0.8125
输出:0.1101
实例2:
输入:0.625
输出:0.101
实例3:
输入:0.8
输出:0.1100110011001100110011001100110011001100110011001101
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
using namespace std;
const int maxa=1e2+10;
double sc;
int ans[maxa],cnt=0;
//idea:十进制小数转换为二进制数字0,1
int main(){
scanf("%lf",&sc);
while(true){
if(sc*2>1){
ans[cnt++]=1;
sc=sc*2-1;
}else if(2*sc==1){
ans[cnt++]=1;
break;
}else if(sc*2<1){
ans[cnt++]=0;
sc=sc*2;
}
}
printf("0.");
for(int i=0;i<cnt;i++)
printf("%d",ans[i]);
printf("\n");
}