可以使用二乘取整法。
十进制数乘以10,小数点右移一位,3205.435*10=32054.35。
同理,二进制数乘以2,小数点右移一位,101101.1101*10=1011011.101(式子中都是二进制数)。
两个小数相同,表示法不同,但各自乘以2后,结果的整数部分和小数部分是相同的,基于此,十进制小数可用(小数部分)“2乘取整法”转换为二进制小数。
有限位数的十进制小数,转换成的二进制小数可能是无限位数的,这时可按要求的精度取有限位的结果即可,最后一位是其后面位“0舍1入”的结果。
C语言简介:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
1、打开visualC++6.0-文件-新建-文件-C++SourceFile。
2、输入预处理命令和主函数:
#include<stdio.h> /*输入输出头文件*/
voidmain()/*空类型:主函数*/
3、定义变量和数组的数据类型并输入一个十进制:
intb[16],x,k,r,i/*定义变量和数组的数据类型为整型*/
printf("输入一个十进制:")/*输出文字提示*/
scanf("%d",&x) /*输入一个十进制数字*/
k=-1/*将-1赋给k*/
4、用除R取余倒计法将十进制的数转化成二进制的数:
do/*用循环将十进制的数转化成二进制的数*/
{
r=x%2/*用除R取余倒计法计算二进制*/
b[++k]=r/*将值赋给数组*/
x/=2/*将原数除2*/
}while(x>=1)
5、输出结果:
for(i=ki>=0i--) /*将上面倒计的数正回来*/
printf("%d",b[i])/*输出结果*/
printf("\n")
6、完整的源代码:
#include<stdio.h> /*输入输出头文件*/
voidmain()/*空类型:主函数*/
{
intb[16],x,k,r,i/*定义变量和数组的数据类型为整型*/
printf("输入一个十进制:")/*输出文字提示*/
scanf("%d",&x) /*输入一个十进制数字*/
k=-1/*将-1赋给k*/
do/*用循环将十进制的数转化成二进制的数*/
{
r=x%2/*用除R取余倒计法计算二进制*/
b[++k]=r/*将值赋给数组*/
x/=2/*将原数除2*/
}while(x>=1)
for(i=ki>=0i--) /*将上面倒计的数正回来*/
printf("%d",b[i])/*输出结果*/
printf("\n")
}
首先需要明确十进制转为二进制的算法:将所需转化的数除以2,所得余数为k1,将所得商再除以2,所得余数为k2…...重复步骤直到商为0;读数时从最后一个余数读起,即kn,k(n-1)…k2,k1;所得数便是转化成的二进制数(除二取余法)