小数转换为二进制--代码

问题:输入小数,即输入的小数小于1,转化为二进制代码输出;

实例1:
输入:0.8125
输出:0.1101

实例2:
输入:0.625
输出:0.101

实例3:
输入:0.8
输出:0.1100110011001100110011001100110011001100110011001101

 

图片来源:https://blog.csdn.net/defineYouMyHeart/article/details/45479469?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5 

代码:

#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");
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值