- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数字逻辑电路设计及应用
C程序设计报告(1)
[问题]:
设计一个C程序实现随意十进制数到二进制数的变换,二进制精度为11
位。
[思路]:
1.十进制数转二进制数对整数和小数的办理时不同样的。因此设计程序时,
也应当对读入的整数和小数的数据分开办理。(分开的方法能够先直接对浮点
数强迫种类变换,即可获得整数部分,再用浮点数减整数部分,即可获得小数
部分)。
2.关于整数部分,采纳的是“除2法”(不知道是否是这个名字)。即,
每次将该数除以2,获得的余数作为该位的二进制数,商作为下一次的除数,依此
类推,直到商为1或0为止。
3.关于小数部分,采纳的是“乘2法”(依旧不知道是否是这个名字)。即,
每次将小数部分乘2,获得的整数部分即为该位的二进制数,小数部分为下一次
的乘数。依此类推,这样做下去是一个无穷不循环的小数,因此一般会要求二进
制数中小数的精度,此题目要求的是11位。
4.在实质程序设计过程中,我发现了这样一个问题,当小数部分二进制码采
纳浮点型数据时,独自输出正确无误,但与整形的整数部分二进制码联合在一
起后,最后3位老是不正确的,思疑是在相加的过程中产生了“大数吃小数”的
问题。依据一般思想,此时应提升精度,采纳longdouble型变量,可是我采纳
的编译器是采纳WindowsC的运转库(MSC编译器)的MinGW,其对printf函
数不支持longdouble型。无奈之下,我只好把小数部分存为一个11位长的数组,
再对其输出。
[流程]:
[程序]:
1/4
1/4
/*****************************************************************
***/*thisisaprogramtotransformdecimalnuberstobinarynubers.
/*HuangBohao
/*将小数部分用数组形式储存,防止了整数部分与小数部分相加而出现的/*
大数吃小数的状况
*****************************************************************
***/#include
intInteger2Binary(int
integer);
,BinaryInt);
for(i=0;i11;i++)
}
/*****************************************************************
***/*functionname:Integer2Binary
/*inputparameter:intinteger(integerwaitingtobetransformed)/*output
parameter:intoutput(transformedinteger)
*****************************************************************
***/intInteger2Binary(intinteger)
{
intB,Y,output,flag;//B被除数,Y为余数,output为输出数据,flag为地点标
志位B=integer;
flag=1;
文档评论(0)