大家在进行模型仿真的时候很容易出现数据溢出的问题,尤其是对于fixdt()数据类型不清楚的童鞋,很容易就犯了和我一样的错,于是我痛定思痛花了半天时间通过仿真手段彻底搞明白了fixdt()。
设定一个定点数:fixdt(a, bits, 2^n, B),大家一定很想搞明白括号里面的东东都是代表什么意思。a表示该数值是有符号还是无符号的数据;bits是这个数据占用的空间多大;2^n是数据的精度;B是一个补偿Bias。
首先来说下这个数值的大小范围,a=0表示无符号,取值范围[0+B, (2bits-1)*2^n+B];
a=1表示有符号,取值范围[-(2(bits-1)*2^n+B), (2(bits-1)-1)*2^n+B]
好了,现在举个栗子:fixdt(1,4,2^-2,10)
| 1 | 1 | 1 | 1 |
其中,对于无符号数据,这里一共是四位,精度是2^-2=0.25,一共四位小数占了两位,剩下的两位11(二进制)那么最大就是3,向下四位最大能表示的数据就是3.75 。
那么对于有符号的数据,这里一共是4个bit,精度是2^-2=0.25,一共四位,小数占了两位,剩下的两位其中一个要表示有无符号,那就是剩下一位1,如果是负数的话,向下取数,最大能表示-2 。向上最大能表示1.75 。
本文解释了fixdt()函数参数含义,包括数据类型、位数、精度和偏置,以及无符号和有符号数据的取值范围,通过实例说明如何计算最大和最小值。
2万+






