定点计算与浮点计算

本文深入探讨了定点计算的必要性,详细介绍了负数的表达及三大规则,并通过C语言展示了固定小数点的折算和乘法实现,最后探讨了固定小数点在数字信号处理中的实际运用。
摘要由CSDN通过智能技术生成

1.定点计算的必要性

        定点计算,简单来说,就是把小数转换为整数的一种计算。这个定点计算的点,就是小数点。从字面意思上说来,就是小数点固定的运算。在详细一点就是,对于整数来说,将假定的小数点固定在某个位置,将整数视为小数。一般来讲,小数点定在哪都无所谓的,决定了之后,那么这个小数点就固定在某一位了(所以叫做定点运算)。简单来说,就是把小数的计算,转换为整数的计算。那么,为什么要如此麻烦的转换过来计算呢?
        ①对于实际的C语言程序,小数的表达常用[double]与[float]类型。换句话说,这个浮点数。对于实际信号处理,在处理前,我们必定会使用A/D去采集原本的模拟信号,然后将其转换为数字信号。这个数字信号,很显然,也不是小数。某些时候为了计算,我们甚至还得将其转换为浮点数,然后才能计算。
        ②DSP分为定点DSP与浮点DSP。浮点DSP就是为浮点运算而量身定做的,其内部有硬件可以直接完成浮点运算。但是,由于其较为复杂的结构,计算耗时也很大以及价格等等的因素,其运用也有一定的限制。
        ③限制结果的位数。
        综上所述,为了计算的快速,掌握定点计算还是必须的。

2.负数的表达与三大规则

        ① 规则一:最高位(MAB)是符号位。使用最高位作为符号位,下面我们使用4-bit的数来进行说明。最高位是符号位,符号位是1的话,其表示的是负数,反之则是正数。那么,此时,最高位的权重则是-8(4-bit),此时+6与-6的表示如下。

很显然,+6 = 4+2,-6 = -8+2成立。这样理解比较直观吧。还有就是,-6就是6的补码,这样理解也对。
        ② 规则二:负数的符号位扩展不影响数的大小。还是拿-6来说,在符6的前面无论补多少个1,这个数同样表示的是-6。当然,最高位是符号位(规则一)。

       ③ 规则三:一个数与符号位相乘,结果等于这个数的补码。当然,这是理所应当的事情。

3.固定小数点的折算与其实现(C语言)

       首先,陈述一个事实。一个4-bit的数乘以一个4-bit的数,其结果为8-bit。继续乘下去的话,位数迟早不够用的。
       为了解决这个问题,我们可以引入小数点。假设0.9x0.9其结果为0.81。前两个乘数与被乘数的有效位数是1,那么结果只需要0.8就足够了。按照这个思路,只要使用绝对值为1一下的数来进行乘法,就可以有效的避免位数不够用了。为此,我们可以提出固定小数点。固定小数点对于DSP来讲,是不存在的,只是我们想象中的一个小数点。对此,对于一个4-bit的数,有以下几种小数点的取法。


  • 7
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值