文档详情

数字逻辑电路设计及应用.pdf

发布:2024-08-04约3.2千字共4页下载文档
文本预览下载声明

数字逻辑电路设计及应用

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;

显示全部
相似文档