十进制转二进制

萌新,第一次写博客,写的地方不好望指出

十进制转二进制:

算法部分:主要是整数和小数

     1.整数部分:遵循除2取余(先得到的离小数点近)

        结束规则:被除数为0

方法:先将浮点数(number)的整数部分(number1)拿出来单独处理,在循环中进行操作取余,除2。当number1等于0时结束循环,将得到的值figure也就是取余得到的值进行*k相加,打印sum(*k的意义是将得到的数字按顺序排列,即实现“先得到的离小数点最近法则”)

        2.小数部分:遵循乘2取整(先得到的离小数点近)

        结束规则:无小数部分,最后结果是1.00

方法:先将浮点数减去整数部分得到小数部分(number2),小数部分在循环中进行操作:乘2,取整,打印,再循环。跳出循环条件:number2等于0(和上面的结束规则等于1不同,这里是要跳出循环的条件不同)

程序设计部分:

        number:用户输入的十进制部分(浮点型)

        number1:单独处理的整数部分

        number2:单独处理的小数部分

        number3:中间量(需要打印的部分)

        float:中间量(需要打印的部分,需要借助k实现”越先得到的离小数点最近“)

        sum:整数部分中完成”越先得到的离小数点最近“这一目标的辅助项

        k:整数部分中完成”越先得到的离小数点最近“这一目标的辅助项

思考:程序=算法+数据结构

在学习C语言时注重的是算法,当然C语言结构也很重要,结构体现了程序化设计的思维

不足:只能实现十进制转二进制,而且只能使用一次

十进制转N进制:

整数部分:遵循除N取余(先得到的离小数点近)

小数部分:遵循乘N取整(先得到的离小数点近)

N进制转十进制:

按权相加:整数部分由小数点左右开始每一位都乘N的次方

但整数是从0开始小数是从-1开始

(例:二进制转十进制:1100.101——1*2^3+1*2^2+0*2^1+0*2^0+1*2^-1+0*2^-2+1*2^-3)

二进制与八进制之间的转化:按8421BCD码三位三位进行换算

二进制与十六进制之间的转化:按8421BCD码四位四位进行换算

在思考上面的不足发现可以将两个不足合起来,构成一个进制转换软件

等待后续......

#include<stdio.h>
int main()
{
	int number1,figure,k=1,sum=0, number3;
	float number, number2;
	printf("请输入十进制数字:");
	scanf("%f", &number);
	number1 = (int)number;
	number2 = number - number1;
	while (number1 != 0)
	{
		figure = number1 % 2;
		number1 = number1 / 2;
		sum = sum + figure*k;
		k = k * 10;
	}
	printf("输出二进制数字:%d.", sum);
	while (number2!=0)
	{
		number2 = number2 * 2;
		number3 = (int)number2;
		printf("%d", number3);
		number2 = number2 - number3;
	}
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值