您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

十进制转二进制

时间:01-14来源:作者:点击数:

十进制转二进制:

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

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;
}
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门