表1给出5种不同整型数表达式的3位编码。
表1 有符号二进制数的常规编码
1.无符号整数(Unsigned Integer)
设X是一个Ⅳ位无符号二进制数,则其范围是[0,2N - 1],表达式如下:
其中扬是X的第n位二进制数字(也就是Xn∈[0,1])。数字Xo称作有效位(Least SignificantBit,LSB),具有相当于个位的权重。数字XN-1)就是有效位(Most Significant Bit,MSB),具有相当于2N-1的权重。
2.有符号数值(Signed-Magnitude,SM)
在有符号数字表示法中,数字和符号是单独表示的。位XN-1(即MSB)代表符号,余下的N-1位代表数字,表达式如下:
这一表达式的范围是[-(2N-1-1;),2N-1-1],有符号数字表示法的优点就是简化了溢出的禁止,但缺点就是加法不得不根据哪一个操作数更大而分开来运算。
3.二进制补码Two’s Complement,2C)
有符号整数的N位二进制补码表达式如下:
其表达式的范围是[-2N-1,2N-1-1]。二进制补码表示法是目前DSP领域内为流行的有符号数字表示法。这是因为它使得累加多个有符号数值成为可能,而且终结果是在N位范围内,我们可以忽略任何算术上的溢出。例如我们计算两个3位数,其过程如下:
溢出可以忽略。所有的计算都是取模2N。这样就有可能出现不能够正确表示中间值的情形,但只要终值有效,结果就是正确的。例如计算3位的数字2+2-3,会得到一个中间值010+010=1002C,也就是-410,但是结果100 - 011=100+101=0012C,是正确的。
二进制补码还可以用来实现模2N算法,而且不需要在算法中作任何改动。
4.二进制反码(也称作1的补码,One’s Complement,1C)
N在二进制反码数字表示法可以整数范围是[-(2N-1+1),2N-1-1]。在二进制反码中,正整数和负整数除了符号位之外具有相同的表示方法。也就是说,事实上0需要额外的表达式。二进制反码中有符号标准表达式如下:
例如,在表1第三列中给书的3和-3的3位二进制反码表达式。
请看下面的简单示例。
在二进制反码中需要“进位回绕(carry wrap-around)”加法。在有效位与有效位相加得到正确结果时,就会出现进位。
尽管如此,这种数字表示法还是能够有效地实现模2N-1运算,而且不需要校正。因此二进制反码在实现特定的DSP算法时,还是有其特殊价值的。
5.减1表示法(Diminished one System,D1)
减1表示法是一种有偏移的数字表示法。正整数与二进制补码相比减少了1。N+1位D1数值范围是[-2N-1,2N-1-1](不含0)。D1数字表示法的编码规则定义如下:
从下面两个D1数相加可以看到,对于D1而言还必须计算补码和颠倒进位的加法。
数不需要在算法上作任何改动就能够有效地实现模2N+1运算。
6.偏移数制(Bias System)
偏移数制对所有数都有一个偏移量。偏移的值通常位于二进制数范围的中间,也就是bias=2N-1-1。例如:对于3位的二进制数,偏移量应该是23-1-1=3。N位偏移数的范围是[-2N-1-1,2N-1]。0就编码成偏移量。偏移数制的编码规则定义如下:
我们可以看到,对于每次加法,都需要减掉偏移量,而对于每次减法,都需要加上偏移量。
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。