dsp两个数相加为什么要左移16位
发布网友
发布时间:2022-04-22 05:23
我来回答
共3个回答
热心网友
时间:2023-05-01 13:28
dsp两个数相加左移16位与具体情况有关。
dsp两个数相加,当加法或加法的结果超过16位表示范围时,则超过16位实际上就是出现了溢出。为了防止溢出采取左移16位的方法,左移16位等于乘以2的16次方,作用是放弃高16位,把低位移到高位。
当加法或加法的结果超过16位表示范围时,如果程序员事先能够了解到这种情况并且需要保持运算精度时则必须保持32位结果。如果程序中是按照16位数进行运算的,则超过16位实际上就是出现了溢出。如果不采取适当的措施则数据溢出会导致运算精度的严重恶化。一般的定点DSP芯片都没有溢出保护功能,当溢出保护功能有效时,一旦出现溢出则累加器ACC的结果为最大的饱和值(上溢为7FFFH,下溢为8001H),从而达到防止溢出引起精度严重恶化的目的。
热心网友
时间:2023-05-01 13:28
只能根据题目推测了
1)这两个数都偏小,和定义是32位的,所以左移16位,使精度提高
2)根据上下程序需要,可能需要赋予的变量定义有关
如果没有帮到你,可以把原程序分享一下,进一步作答
热心网友
时间:2023-05-01 13:29
只能根据题目推测了
1)这两个数都偏小,和定义是32位的,所以左移16位,使精度提高
2)根据上下程序需要,可能需要赋予的变量定义有关