zoukankan      html  css  js  c++  java
  • 定点c程序之三:乘法

    两个有符号定点数相乘结果将导致两个符号位,为此DSP处理器一般都设计了硬件控制逻辑,可以直接将乘积结果左移移位,去掉符号位以后再存储。
    两个16比特定点数相乘得到的是32位定点数,一种处理方法是直接保留32比特乘积,进行后续处理;另一种处理方法是舍弃低16比特,降低精度。

    设浮点乘法运算的表达式为:

    float x,y,z;

    z=xy ;

    假设经过统计后x的Q值为Qx,y的Q值为Qy,乘积z的Q值为Qz,则

    zq*2^(- Qz)   = xq* yq*2^(-(Qx +Qy))

    zq=(xq* yq)*2^( Qz -(Qx +Qy))

    所以定点表示的乘法为:

    int x,y,z;

    long temp;

    temp=(long)x;

    z=(temp×y)>>( QX + Qy– Qz);

    例:

    Q15×Q15=Q30     0.5×0.5 = 0.25

       0.100 0000 0000 0000

    ×0.100 0000 0000 0000

    ------------------------------------------------------------------

       00.01 0000 0000 0000 0000 0000 0000 0000 = 0.25 ; Q30

    Q14×Q14=Q28  1.5×0.75=1.125

       01.00 0000 0000 0000

    ×00.11 0000 0000 0000

    -------------------------------------------------------------------

       0001. 0010 0000 0000 0000 0000 0000 0000 = 1.125 ; Q28

  • 相关阅读:
    [Matlab.Matrix] 作为判断条件
    [Matlab.GUI] 学习小结
    [Modelsim] 初识
    [Matlab] isnan
    [Matlab] round
    [VS2012] 无法查找或打开 PDB 文件
    [Matlab.GUI]初识
    表格特效代码全集中
    JAVASCRIPT基础
    第4天:调用样式表
  • 原文地址:https://www.cnblogs.com/c6000/p/1805583.html
Copyright © 2011-2022 走看看