可以使用二乘取整法。
创新互联公司自成立以来,一直致力于为企业提供从网站策划、网站设计、成都网站设计、网站建设、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。
十进制数乘以10,小数点右移一位,3205.435*10=32054.35。
同理,二进制数乘以2,小数点右移一位,101101.1101*10=1011011.101(式子中都是二进制数)。
两个小数相同,表示法不同,但各自乘以2后,结果的整数部分和小数部分是相同的,基于此,十进制小数可用(小数部分)“2乘取整法”转换为二进制小数。
有限位数的十进制小数,转换成的二进制小数可能是无限位数的,这时可按要求的精度取有限位的结果即可,最后一位是其后面位“0舍1入”的结果。
C语言简介:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。即小数部分连续的乘以R,保留每次相乘的整数部分。
具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。将得到的整数部分按照得到的顺序排流列即为小数部分。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
扩展资料:
十进制整数转换为二进制整数的方法:
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
一般在程序里面写成除二取余数的方法来得到。跟二进制的数的取法手工算法一样。
任意数除2以后,如果有小数点,就在堆栈中写进一个1,没有小数就写0。然后除完以后,把堆栈的数倒取出来,就成了该数字的二进制。
#include iostream.h
void divideData(const float number, int integer, float decimal); //分离出整数和小数部分.
void printBinaryForInteger(int integer); //打印整数部分的二进制形式.
void printBinaryForDecimal(float decimal); //打印小数部分的二进制形式.
int main()
{
float number;
int integer;
float decimal;
cout"Please input a decimal number for being converted: ";
cinnumber;
cout"\nThe binary number converted from your input "number" is: ";
divideData(number, integer, decimal);
printBinaryForInteger(integer);
if (integer==0) cout"0";
cout".";
printBinaryForDecimal(decimal);
coutendl;
return 1;
}
void divideData(const float number, int integer, float decimal)
{
integer = (int)number;
decimal = number - (float)integer;
}
void printBinaryForInteger(int integer)
{
int k,a=0;
int b[32];
while (integer!=0)
{
k=integer%2;
b[a++]=k;
integer=integer/2;
}
while (a0)
{
coutb[--a];
}
}
void printBinaryForDecimal(float decimal)
{
int i=0;
int count=0;
int a[8]={0};
while (count6) //小数部分取6位(也可用符号常量设置).
{
decimal*=2;
a[count++]=(int)decimal;
if (decimal=1.0)
decimal-=1.0;
}
while (i6)
{
couta[i++];
}
}
//用于C编译器时略作修改;只考虑了输入数为正数.