文章总目录点这里:《基于FPGA的数字信号处理》专栏的导航与说明
1、前言
将浮点数定量化为定点数时,有一个避不开的问题:某些小数是无法用有限个数的2进制数来表示的。比如:
0.5(D) = 0.1(B)
0.1(D) = 0.0001100110011001~~~~(B)
可以看到0.5是可以精准表示的,但是0.1却不行。原因是整数是离散的,而小数是连续的。在固定范围内整数的个数是有限个,而小数的个数则是无限个,所以某些小数注定是不能被有限个数的编码来精准表示的。
显然,在工程中不可能做无限位的定点化,我们只能根据需求,确定好精度从而决定定点数的格式。确定好定点数的格式后,有一个无法避免的问题,那就是如何对超过范围的部分进行处理,即如何舍入(Rounding)?
常见的舍入方式有向上取整(ceil),向下取整(floor),向0取整(fix),四舍五