首页/文章/ 详情

定点数和浮点数

1年前浏览205

定点数

定点数是指,数字在小数点之后和之前具有固定的位数。

可以用Qm.n表示法进行表示.

  • m位为整数部分 

  • n位小数部分

  • 有符号数的总位数N = m + n + 1

n=0时,则定点数用来存储整数。

 

定点数(整数)

定点数可以用来存储整数,包括正整数和负整数。定点(整数)表示的常见格式有unsigned integer, offset binary, sign and magnitude, two’s complement。

假设每个整数都用4个bit来表示,则在上面四种格式下,二进制和十进制之间的关系如下图所示。


Unsigned integer是最直观的二进制格式,用windows自带的计算器就能实现换算。

 

 

Offset binaryunsigned integer类似,不同之处是相同的二进制表示,offset binary下代表的十进制数与unsigned integer下代表的十进数有一个整体偏移,这样就可以表示负数。

比如在图1中,4 bit二进制数对应于整数-7~8,在offset binary格式下,十进制数整体偏移了7

对于这个偏移量,没有固定标准,比如上面的偏移量是7,也可以为8。在ADC和DAC中,经常会用到offset binary.

 

sign and magnitude是表示负整数的另一种简单方法。 最左边的位为符号位,0代表正数,1代表负数。其他位是数字绝对值的标准二进制表示形式。因为对于零有两种表示形式,即0000(正零)和1000(负零),所以会导致一个浪费的位模式。

 

Two’s complement(二进制补码)是硬件工程师喜欢的格式,也是计算机中通常表示整数的方式。 最左边的位为符号位,0代表数字为正数或0,1代表数字为1。

 

其编码模式可以理解为:

对于4bit二进制,其二进制表示仍为0000~1111。如上图所示,将圆盘分为16等分,把0000~1111依次带入。然后以0为分界线,按顺时针转,即0000~0111代表0~7;按逆时针转,即1111~1000代表-1~-8。

采用二进制补码时,对于正数,在十进制数和二进制补码之间进行转换很简单,即从十进制到二进制的简单转换。 对于负数,通常使用以下算法:

1)取十进制数的绝对值,

2)将其转换为二进制,

3)对所有位进行补码(1变为零,0变为1),

4)在二进制数上加1。

二进制补码对人类的大脑来说比较复杂,但是在进行数据处理时,则非常方便。

 

定点数(小数)

 

以上是当N=16时,不同的m/n值时,所对应的动态范围和精度。

 

浮点数(实数)

浮点数的编码方案比定点的编码方案复杂,其基本概念与科学计数法中基本思想相同,两者的不同点,在与浮点数的基为2,科学计数法的基为10。

ANSI/IEEE Std. 754-1985标准32bit数据形式定义为单精度(single precision),64bit数据形式定义为双精(double precision)


以单精度为例,32位分为三个独立的组:位0到22形成尾数(记为M),位23到30形成指数(记为E),位31是符号位(记为S)则:

 

IEEE标准将最大数和最小数的范围略微缩小,分别为

 

与定点设计相比,浮点设计会消耗更多的FPGA资源,带来更高的消耗。所以在满足指标要求的情况下,优先采用定点设计,可以有助于降低FPGA资源的使用、减少功耗。

 

文献[3]中,则阐述了,在保证指标的情况下,采用定点设计,可以减少资源使用,进而降低功耗。


参考文献:

[1]The Scientist and Engineer's Guide to Digital Signal Processing_Ch4

[2]EE 3610 Digital Systems

[3]Ambrose Finnerty and Hervé Ratigner,Reduce Power and Cost by Converting from Floating Point to Fixed Point

[4]Floating Point Converter:https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html


来源:加油射频工程师
System
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-03
最近编辑:1年前
加油射频工程师
分享所学知识
获赞 236粉丝 73文章 537课程 1
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈