在DSP中什么是多余符号位?

问题描述:

在DSP中什么是多余符号位?

对于一个负数,如果前面有一些冗余的符号位,也就是一个比较小的小数,那么可以去掉冗余位,对数据进行左移.
对于一个大的正数,如果后面有不少的0,那么可以右移.因为这些0其实是没有什么实际运算作用.
当然,左移或者右移多少位,要保存起来.
TMS320C54X有两条指令,来做归一化.
首先是EXP src指令.计算能够移多少位,比如一个数有20个冗余符号位,那么能够左移20-8=12位,这个12会保存到T寄存器.
然后是NORM 指令,把寄存器的数归一化,也就是移位.
给一个书上的例子:
EXP A; (多余符号位数-8)→T寄存器.
ST T,EXPONENT;将保存在T寄存器中的指数存入指定的数据存储器中.
NORM A;对累加器A进行归一化处理.
40位累加器A中的定点数FF FFFF F001.先用EXP A指令,求得指数为13H,存放在T寄存器中,然后执行NORM A指令,在单个周期内将定点数分成尾数FF 8008 0000和指数13H两个部分.
具体计算方法:
将FF FFFF F001变成二进制数,即 11111111 11111111111111111111000000000001
是不是有很多1是无用的符号位?
最后一个F(蓝色)的第四位前都是多余的符号位(红色数字),共27位,27-8=19,也就是13H,所以指数为13H,T=13H.
NORM A 是将A归一化,即向左移位T中所存的数(13H),右边添0,移位的结果是FF 8008 0000.这样就将一个定点数转化成一个浮点数.