- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定点仿真
C 语言中的定点计算仿真
1 定点计算原理
见王灵光的《定点数运算原理》。
2 定点仿真
2.1 算法原理
2.1.1 程序流程
在 C 语言中,没有直接可以调用的函数来进行定点计算,所以需要自己编
写函数来模拟定点计算。一般来说,我们都是用整数运算来模拟定点运算的,即
C 语言中的int 类型。对于任何一个定点程序,都有下图所示的三个过程:
double/float 类型转变为int 类型
主程序,里面所进行的所有关于定点的计算都通过调用函数来实现
int 类型转变为double/float
定点计算和浮点计算的差别很大,定点数的数值范围与数值精度都有严格的
要求。对于一个I +B +1位的定点系统,它的整数位宽为I ,小数位宽为B ,剩下
的一位为符号位,所表示的定点数范围从max 2I =−2−B 到min −2I 。使用定点
计算的系统中所有的数值都不能超过此范围,超过此范围的数将被限幅。而在此
范围之间的数值,其数值的最小精度也被限定在2−B ,如果小数位大于B 的话,
也要四舍五入为B 位小数,精度控制在2−B 。
2.1.2 基本运算
在C 语言中,当输入一个double/float 变量x 的时候,首先我们把它转为int
变量X :
⎧⎢2B ⋅x +0.5⎥ if x ≥0
⎪⎣ ⎦
X ⎨
⎪⎩⎡⎢2B ⋅x −0.5⎤⎥ if x 0
此处采用了四舍五入的取整方法对其化整,化整之后,再对其限幅。此时有:
I: 输入的整数二进制位宽
B :输入的小数二进制位宽
max 2I +B =−1 :系统所能表示的最大值;
min =−2B +I :系统所能表示的最小值;
max 和min 都是int 类型变量。所以限幅过程如下:
max if X max
⎧
⎪
X ⎨min if X =min
⎪
⎩X if other
此时的X 代表了x 在定点系统中的二进制表示值。
在 C 语言中,必须对所有的运算重新定义才能使用,定义的方法主要通过
调用函数来实现。有两个定点数X 和Y ,它们的和为定点数Z ,那么有
Z=X+Y
max if Z max
⎧
⎪
且Z ⎨min if Z min
⎪
⎩ Z if other
我们可以看到,当两个数的和Z 大于最大值max 的时候,它就被限幅到等于max ;
而当它小于最小值min 的时候,它被限幅到min 。X 、Y 本身就是定点数,所以
它们的精度为2−B ,因此其和值z 的精度也就维持在2−B 了。减法有类似的定义。
而乘除法的定义则难度稍微大些。我们仍然设两个定点数 X 和 Y ,它们的
积为定点数Z ,那么有:
⎧ ×
⎢X Y ⎥
if X Y
您可能关注的文档
最近下载
- 丽声北极星自然拼读绘本第一级 Lola and the King 课件.pptx
- 人教版2024-2025学年九年级数学上册10月月考试题[含答案].pdf
- 品质工程教学课件.pptx
- 鲁教版五四制初一年级上册册数学知识点.pdf VIP
- 《聪明的牧羊人——欧洲民间故事精选》名著导读课件.pptx VIP
- QBT 2578-2002 陶瓷原料化学成分光度分析方法.docx VIP
- 《葡萄酒葡萄酒》课件.pptx VIP
- 新人教版高中数学选择性必修第一册全套教案含情景引入核心素养word版.docx VIP
- you and me(君と僕) 松井佑贵 吉他指弹 吉他谱.pdf
- 非急救转运协议书模板.docx
文档评论(0)