案例六 十进制数与二进制数的转换器

上传人:wt****50 文档编号:56649603 上传时间:2018-10-14 格式:PPT 页数:18 大小:451.50KB
返回 下载 相关 举报
案例六  十进制数与二进制数的转换器_第1页
第1页 / 共18页
案例六  十进制数与二进制数的转换器_第2页
第2页 / 共18页
案例六  十进制数与二进制数的转换器_第3页
第3页 / 共18页
案例六  十进制数与二进制数的转换器_第4页
第4页 / 共18页
案例六  十进制数与二进制数的转换器_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《案例六 十进制数与二进制数的转换器》由会员分享,可在线阅读,更多相关《案例六 十进制数与二进制数的转换器(18页珍藏版)》请在金锄头文库上搜索。

1、第1页 共18页,案例六 十进制数与二进制数的转换器,本案例知识要点 循环语句的使用 函数的嵌套调用 字符数组的使用,第2页 共18页,一、案例需求,案例描述 在C+语言中,Visual C+开发环境只提供了十进制向八进制或十六进制转换的功能,而并没有提供十进制转换为二进制的功能。 试编写一个程序,要求用户在屏幕上输入一个带小数的十进制数后,计算机给出相应的二进制数。 案例效果图 十进制数与二进制数的转换器案例效果如图所示。,第3页 共18页,运行效果,第4页 共18页,功能说明 程序开始运行后,在屏幕上给出提示。 用户按照提示输入一个十进制数,可以包括整数部分和小数部分。 程序运行结束,计算

2、机给出对应的二进制数。,第5页 共18页,二、案例分析,十进制数转换成二进制数时,必须将十进制数的整数部分和小数部分分开转换,然后再将转换后的二进制数的整数部分和小数部分结合即可。 十进制数整数部分转换时,采用除基取余法,直到商为零。方法为:将给定的十进制数除以基数,得到一个商数和余数,再将得到的商数除以基数,又得到一个商数和余数。继续这一过程,直到商数为零为止。在此过程中,每次得到的余数就是该进制数中各位数字。其中,最先得到的余数为最低有效位,最后得到的余数为最高有效位。 例如,将十进制数254转换成二进制数的过程如下:,第6页 共18页,第7页 共18页,所以,254D1111 1110B

3、。 十进制数小数部分转换时,采用乘基取整法,直到小数部分为零或达到精度要求为止。方法为:用基乘以给定的十进制数的纯小数部分,取出乘积的整数部分,再用余下的纯小数部分乘以基,取出乘积的整数部分。继续这一过程,直到余下的纯小数部分为0或达到精度要求为止。最后把每次得到的整数部分从上到下依次取出,从左到右排列,得到对应的二进制数、八进制数、十六进制数。 例如,将十进制数0.687 5转换成二进制数的过程如下:,第8页 共18页,小数部分为0,转换结束。 所以,0.687 5D0.1011B。 二者合成为:254.687 5D1111 1110.1011B。 在转换过程中,整数部分是一定可以完全转换的

4、;但是在小数部分进行转换时,有些小数是不能完全转换的。例如,十进制小数“0.2”转换为二进制时,不管乘了多少次的基数2,都不会只得到整数。一般遇到这种情况,在手动进行计算时只要取小数点后68位即可。 本案例采用两个字符数组,分别对输入的十进制数的整数部分和小数部分进行处理。,第9页 共18页,三、案例设计,函数的设计 根据上述的设计思想,本案例设计了3个函数,函数DtoB ()用于将十进制数的整数部分和小数部分分开;函数DtoBI ()用于将十进制数的整数部分转换成二进制的整数;函数DtoBF ()用于将十进制数的小数部分转换为二进制的小数。 (1)将输入数的整数部分和小数部分分开的函数Dto

5、B() 定义DtoB()函数的类型为void型,定义双精度变量num作为形参接收主函数调用函数时传递的十进制原数据。 在函数中,将用户输入的十进制数使用强制类型转换得到整数部分,原数减去整数部分即可得到小数部分,定义整型变量inum用于存储原数据的整型部分,定义双精度变量fnum用于存储原数据中的小数部分。函数中嵌套调用了DtoBI(inum)函数和DtoBF(fnum)函数,用于将整数和小数部分分别转换为对应的二进制数。,第10页 共18页,将十进制的整数部分转换为二进制的整数的函数DtoBI() 定义DtoBI()函数的类型为void型,定义整型变量inum作为形参接收DtoB()函数调用

6、时传递的实参值。 在函数中,定义一个包含50个字符的整型数组str50,语句stri=inum%2用于将得到的余数存储在该整型数组中,语句binij1=strj+48用于将存储在数组str中的反序余数再次反序,从而得到正序数据并存储在整型数组bin中。,第11页 共18页,将十进制的小数部分转换为二进制的小数的函数DtoBF() 定义DtoBF()函数的类型为void型,定义双精度变量fnum作为形参接收DtoB()函数调用时传递的实参值。 该函数中使用的语句与DtoBI()函数的语句很类似,为了避免重复,可以使用字符串拷贝函数strcpy()完成赋值。使用语句int(fnum)+48可以将整

7、型数据转换成字符型。整型变量i的最大值设为9,用于控制循环次数,设定小数的保留位数。,第12页 共18页,主程序设计 主程序流程如图所示。,第13页 共18页,第14页 共18页,第15页 共18页,第16页 共18页,第17页 共18页,第18页 共18页,五、案例总结与提高,案例总结 本案例采用字符数组实现了十进制数向二进制数的转换。对于一个既包含整数部分又包含小数部分的十进制数,需要分开后分别转换。 使用字符数组而不使用整型数组的理由是字符数组以“0”作为结束符,容易处理,但字符数字和整型数字之间的ASCII码相差48,需要注意。 案例提高 本案例只能进行十进制数向二进制数的转换,请读者修改本案例,实现二进制数向十进制数的转换。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号