计算机算法之定点数
发布时间:2008/12/17 0:00:00 访问次数:927
表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)
表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)
热门点击
- Bi-CMOS微电子技术简介
- 半导体电致发光基础理论
- 分布反馈激光器(DFB-LD)
- 全半导体布拉格反射镜简介
- 交流电流测量电路的工作原理
- SOI微电子技术简介
- 电波传播的菲涅尔区
- VCSEL光腔的设计
- 接触式/接近式光刻机
- 光发射器件能带结构
推荐技术资料
- FU-19推挽功放制作
- FU-19是国产大功率发射双四极功率电二管,EPL20... [详细]