新建
上传
首页
助手
最?/div>
资料?/div>
工具

DSP

学习?/p>

 

定标

 

 

许多

DSP

芯片只支持整数运算,

如果现在这些芯片上进行小数运算的话,

?/p>

点小?/p>

运算应该是最佳选择了,

此外即使芯片支持浮点数,

定点小数运算也是最

佳的速度选择?/p>

 

?/p>

DSP 

世界中,由于

DSP

芯片的限?/p>

,

经常使用定点小数运算。所谓定?/p>

小数?/p>

实际上就是用整数来进行小数运算?/p>

下面先介绍定点小数的一些理论知识,

然后?/p>

C

语言

 

为例,介绍一下定点小数运算的方法。在

TI 

C5000 

DSP

系列中使

?/p>

16

比特为最小的储存单位?/p>

所以我们就?/p>

16

比特的整数来进行定点小数运算?/p>

 

?/p>

 

从整数开始,

16

比特的储存单位最多可以表?/p>

0x0000

?/p>

0xffff

?/p>

65536

种状态,如果它表?/p>

C

语言中的无符号整数的话,就是?/p>

0

?/p>

 

65535

。如果需

要表示负数的话,那么最高位就是符号位,而剩下的

15

位可以表?/p>

32768

种状

态。这里可以看出,对于计算机或?/p>

DSP

芯片来说,符?/p>

 

并没有什么特殊的?/p>

存方式,

其实是和数字一起储存的?/p>

为了使得无论是无符号数还是符号数?/p>

都可

以使用同样的加法减法规则,符号数中的负数用正数的补码表示?/p>

 

我们都知?/p>

-1 

+ 

1 

=0

,?/p>

0x0001

表示

1

,那?/p>

-1

用什么来表示才能使得

-1 

+ 1 =0

呢?答案很简单:

0xffff

。现在就可以打开

Windows

的计算器,用

16

?/p>

制计算一?/p>

0xffff+0x0001

?/p>

结果?/p>

0x10000

?/p>

那么

 

0x10000

?/p>

0x0000

等价麽,

我们刚才说过?/p>

16

比特来表达整数,最高位?/p>

1

是第

17

位,这一位是溢出位,

在运算寄存器中没有储存这一位,所以结果是?/p>

16

位,也就?/p>

0x0000

。现在我

们知道负数的表达方式了?/p>

举个例子?/p>

-100

?/p>

首先我们需要知?/p>

100

?/p>

16

进制?/p>

用计算器转换一下,可以知道?/p>

0x0064

,那?/p>

-100

就是

0x10000 - 0x0064

,用

计算器算一下得

0xff9c

?/p>

 

还有一种简单的转换符号的方法,就是取反加一

:把?/p>

x

写成二进制格式,

每位

0

?/p>

1

?/p>

1

?/p>

0

,最后把结果?/p>

1

就是

-x

了?/p>

 

好,

 

复习了整数的相关知识之后,我们进入定点小数运算环节。所谓定?/p>

小数?/p>

就是小数点的位置是固定的?/p>

我们是要用整数来表示定点小数?/p>

由于小数

点的位置是固?/p>

 

的,所以就没有必要储存它(如果储存了小数点的位置,那就

是浮点数了)

?/p>

既然没有储存小数点的位置?/p>

那么计算机当然就不知道小数点?/p>

位置,所以这个小数点的位置是我们写程序的人自己需要牢记的?/p>

 

先以

10

进制为例。如果我们能够计?/p>

12+34=46

的话,当然也就能够计?/p>

1.2+3.4 

或?/p>

0.12+0.34

了。所以定点小数的加减法和整数的相同,并且和小

数点的位置无关。乘法就不同了?/p>

 

12*34=408

,?/p>

1.2*3.4=4.08

。这?/p>

1.2

?/p>

小数点在?/p>

1

位之前,?/p>

4.08

的小数点在第

2

位之前,小数点发生了移动。所

以在做乘法的

 

时候,需要对小数点的位置进行调整?!可是既然我们是做定点

小数运算,那就说小数点的位置不能动!!怎么解决这个矛盾呢,那就是舍弃最

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

DSP

学习?/p>

 

定标

 

 

许多

DSP

芯片只支持整数运算,

如果现在这些芯片上进行小数运算的话,

?/p>

点小?/p>

运算应该是最佳选择了,

此外即使芯片支持浮点数,

定点小数运算也是最

佳的速度选择?/p>

 

?/p>

DSP 

世界中,由于

DSP

芯片的限?/p>

,

经常使用定点小数运算。所谓定?/p>

小数?/p>

实际上就是用整数来进行小数运算?/p>

下面先介绍定点小数的一些理论知识,

然后?/p>

C

语言

 

为例,介绍一下定点小数运算的方法。在

TI 

C5000 

DSP

系列中使

?/p>

16

比特为最小的储存单位?/p>

所以我们就?/p>

16

比特的整数来进行定点小数运算?/p>

 

?/p>

 

从整数开始,

16

比特的储存单位最多可以表?/p>

0x0000

?/p>

0xffff

?/p>

65536

种状态,如果它表?/p>

C

语言中的无符号整数的话,就是?/p>

0

?/p>

 

65535

。如果需

要表示负数的话,那么最高位就是符号位,而剩下的

15

位可以表?/p>

32768

种状

态。这里可以看出,对于计算机或?/p>

DSP

芯片来说,符?/p>

 

并没有什么特殊的?/p>

存方式,

其实是和数字一起储存的?/p>

为了使得无论是无符号数还是符号数?/p>

都可

以使用同样的加法减法规则,符号数中的负数用正数的补码表示?/p>

 

我们都知?/p>

-1 

+ 

1 

=0

,?/p>

0x0001

表示

1

,那?/p>

-1

用什么来表示才能使得

-1 

+ 1 =0

呢?答案很简单:

0xffff

。现在就可以打开

Windows

的计算器,用

16

?/p>

制计算一?/p>

0xffff+0x0001

?/p>

结果?/p>

0x10000

?/p>

那么

 

0x10000

?/p>

0x0000

等价麽,

我们刚才说过?/p>

16

比特来表达整数,最高位?/p>

1

是第

17

位,这一位是溢出位,

在运算寄存器中没有储存这一位,所以结果是?/p>

16

位,也就?/p>

0x0000

。现在我

们知道负数的表达方式了?/p>

举个例子?/p>

-100

?/p>

首先我们需要知?/p>

100

?/p>

16

进制?/p>

用计算器转换一下,可以知道?/p>

0x0064

,那?/p>

-100

就是

0x10000 - 0x0064

,用

计算器算一下得

0xff9c

?/p>

 

还有一种简单的转换符号的方法,就是取反加一

:把?/p>

x

写成二进制格式,

每位

0

?/p>

1

?/p>

1

?/p>

0

,最后把结果?/p>

1

就是

-x

了?/p>

 

好,

 

复习了整数的相关知识之后,我们进入定点小数运算环节。所谓定?/p>

小数?/p>

就是小数点的位置是固定的?/p>

我们是要用整数来表示定点小数?/p>

由于小数

点的位置是固?/p>

 

的,所以就没有必要储存它(如果储存了小数点的位置,那就

是浮点数了)

?/p>

既然没有储存小数点的位置?/p>

那么计算机当然就不知道小数点?/p>

位置,所以这个小数点的位置是我们写程序的人自己需要牢记的?/p>

 

先以

10

进制为例。如果我们能够计?/p>

12+34=46

的话,当然也就能够计?/p>

1.2+3.4 

或?/p>

0.12+0.34

了。所以定点小数的加减法和整数的相同,并且和小

数点的位置无关。乘法就不同了?/p>

 

12*34=408

,?/p>

1.2*3.4=4.08

。这?/p>

1.2

?/p>

小数点在?/p>

1

位之前,?/p>

4.08

的小数点在第

2

位之前,小数点发生了移动。所

以在做乘法的

 

时候,需要对小数点的位置进行调整?!可是既然我们是做定点

小数运算,那就说小数点的位置不能动!!怎么解决这个矛盾呢,那就是舍弃最

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

DSP

学习?/p>

 

定标

 

 

许多

DSP

芯片只支持整数运算,

如果现在这些芯片上进行小数运算的话,

?/p>

点小?/p>

运算应该是最佳选择了,

此外即使芯片支持浮点数,

定点小数运算也是最

佳的速度选择?/p>

 

?/p>

DSP 

世界中,由于

DSP

芯片的限?/p>

,

经常使用定点小数运算。所谓定?/p>

小数?/p>

实际上就是用整数来进行小数运算?/p>

下面先介绍定点小数的一些理论知识,

然后?/p>

C

语言

 

为例,介绍一下定点小数运算的方法。在

TI 

C5000 

DSP

系列中使

?/p>

16

比特为最小的储存单位?/p>

所以我们就?/p>

16

比特的整数来进行定点小数运算?/p>

 

?/p>

 

从整数开始,

16

比特的储存单位最多可以表?/p>

0x0000

?/p>

0xffff

?/p>

65536

种状态,如果它表?/p>

C

语言中的无符号整数的话,就是?/p>

0

?/p>

 

65535

。如果需

要表示负数的话,那么最高位就是符号位,而剩下的

15

位可以表?/p>

32768

种状

态。这里可以看出,对于计算机或?/p>

DSP

芯片来说,符?/p>

 

并没有什么特殊的?/p>

存方式,

其实是和数字一起储存的?/p>

为了使得无论是无符号数还是符号数?/p>

都可

以使用同样的加法减法规则,符号数中的负数用正数的补码表示?/p>

 

我们都知?/p>

-1 

+ 

1 

=0

,?/p>

0x0001

表示

1

,那?/p>

-1

用什么来表示才能使得

-1 

+ 1 =0

呢?答案很简单:

0xffff

。现在就可以打开

Windows

的计算器,用

16

?/p>

制计算一?/p>

0xffff+0x0001

?/p>

结果?/p>

0x10000

?/p>

那么

 

0x10000

?/p>

0x0000

等价麽,

我们刚才说过?/p>

16

比特来表达整数,最高位?/p>

1

是第

17

位,这一位是溢出位,

在运算寄存器中没有储存这一位,所以结果是?/p>

16

位,也就?/p>

0x0000

。现在我

们知道负数的表达方式了?/p>

举个例子?/p>

-100

?/p>

首先我们需要知?/p>

100

?/p>

16

进制?/p>

用计算器转换一下,可以知道?/p>

0x0064

,那?/p>

-100

就是

0x10000 - 0x0064

,用

计算器算一下得

0xff9c

?/p>

 

还有一种简单的转换符号的方法,就是取反加一

:把?/p>

x

写成二进制格式,

每位

0

?/p>

1

?/p>

1

?/p>

0

,最后把结果?/p>

1

就是

-x

了?/p>

 

好,

 

复习了整数的相关知识之后,我们进入定点小数运算环节。所谓定?/p>

小数?/p>

就是小数点的位置是固定的?/p>

我们是要用整数来表示定点小数?/p>

由于小数

点的位置是固?/p>

 

的,所以就没有必要储存它(如果储存了小数点的位置,那就

是浮点数了)

?/p>

既然没有储存小数点的位置?/p>

那么计算机当然就不知道小数点?/p>

位置,所以这个小数点的位置是我们写程序的人自己需要牢记的?/p>

 

先以

10

进制为例。如果我们能够计?/p>

12+34=46

的话,当然也就能够计?/p>

1.2+3.4 

或?/p>

0.12+0.34

了。所以定点小数的加减法和整数的相同,并且和小

数点的位置无关。乘法就不同了?/p>

 

12*34=408

,?/p>

1.2*3.4=4.08

。这?/p>

1.2

?/p>

小数点在?/p>

1

位之前,?/p>

4.08

的小数点在第

2

位之前,小数点发生了移动。所

以在做乘法的

 

时候,需要对小数点的位置进行调整?!可是既然我们是做定点

小数运算,那就说小数点的位置不能动!!怎么解决这个矛盾呢,那就是舍弃最

Ͼλ">
Ͼλ
Ŀ

DSP学习之定标总结 - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

DSP

学习?/p>

 

定标

 

 

许多

DSP

芯片只支持整数运算,

如果现在这些芯片上进行小数运算的话,

?/p>

点小?/p>

运算应该是最佳选择了,

此外即使芯片支持浮点数,

定点小数运算也是最

佳的速度选择?/p>

 

?/p>

DSP 

世界中,由于

DSP

芯片的限?/p>

,

经常使用定点小数运算。所谓定?/p>

小数?/p>

实际上就是用整数来进行小数运算?/p>

下面先介绍定点小数的一些理论知识,

然后?/p>

C

语言

 

为例,介绍一下定点小数运算的方法。在

TI 

C5000 

DSP

系列中使

?/p>

16

比特为最小的储存单位?/p>

所以我们就?/p>

16

比特的整数来进行定点小数运算?/p>

 

?/p>

 

从整数开始,

16

比特的储存单位最多可以表?/p>

0x0000

?/p>

0xffff

?/p>

65536

种状态,如果它表?/p>

C

语言中的无符号整数的话,就是?/p>

0

?/p>

 

65535

。如果需

要表示负数的话,那么最高位就是符号位,而剩下的

15

位可以表?/p>

32768

种状

态。这里可以看出,对于计算机或?/p>

DSP

芯片来说,符?/p>

 

并没有什么特殊的?/p>

存方式,

其实是和数字一起储存的?/p>

为了使得无论是无符号数还是符号数?/p>

都可

以使用同样的加法减法规则,符号数中的负数用正数的补码表示?/p>

 

我们都知?/p>

-1 

+ 

1 

=0

,?/p>

0x0001

表示

1

,那?/p>

-1

用什么来表示才能使得

-1 

+ 1 =0

呢?答案很简单:

0xffff

。现在就可以打开

Windows

的计算器,用

16

?/p>

制计算一?/p>

0xffff+0x0001

?/p>

结果?/p>

0x10000

?/p>

那么

 

0x10000

?/p>

0x0000

等价麽,

我们刚才说过?/p>

16

比特来表达整数,最高位?/p>

1

是第

17

位,这一位是溢出位,

在运算寄存器中没有储存这一位,所以结果是?/p>

16

位,也就?/p>

0x0000

。现在我

们知道负数的表达方式了?/p>

举个例子?/p>

-100

?/p>

首先我们需要知?/p>

100

?/p>

16

进制?/p>

用计算器转换一下,可以知道?/p>

0x0064

,那?/p>

-100

就是

0x10000 - 0x0064

,用

计算器算一下得

0xff9c

?/p>

 

还有一种简单的转换符号的方法,就是取反加一

:把?/p>

x

写成二进制格式,

每位

0

?/p>

1

?/p>

1

?/p>

0

,最后把结果?/p>

1

就是

-x

了?/p>

 

好,

 

复习了整数的相关知识之后,我们进入定点小数运算环节。所谓定?/p>

小数?/p>

就是小数点的位置是固定的?/p>

我们是要用整数来表示定点小数?/p>

由于小数

点的位置是固?/p>

 

的,所以就没有必要储存它(如果储存了小数点的位置,那就

是浮点数了)

?/p>

既然没有储存小数点的位置?/p>

那么计算机当然就不知道小数点?/p>

位置,所以这个小数点的位置是我们写程序的人自己需要牢记的?/p>

 

先以

10

进制为例。如果我们能够计?/p>

12+34=46

的话,当然也就能够计?/p>

1.2+3.4 

或?/p>

0.12+0.34

了。所以定点小数的加减法和整数的相同,并且和小

数点的位置无关。乘法就不同了?/p>

 

12*34=408

,?/p>

1.2*3.4=4.08

。这?/p>

1.2

?/p>

小数点在?/p>

1

位之前,?/p>

4.08

的小数点在第

2

位之前,小数点发生了移动。所

以在做乘法的

 

时候,需要对小数点的位置进行调整?!可是既然我们是做定点

小数运算,那就说小数点的位置不能动!!怎么解决这个矛盾呢,那就是舍弃最



ļ׺.doc޸Ϊ.docĶ

  • ̨Ҽҹ¹㲥Ŀ߻_4
  • ҵؿ
  • 2016-2021DMCҵȵ鼰չǰо
  • Ϻл2016_2017ѧ꼶ѧп()
  • 2018˽̰Сѧ꼶²ѧԪ-ȫ
  • 2018ʡʦƸСѧۺ֪ʶ
  • տ¶ڵտ¶
  • 꼶ϲġɽʯ̰ƪ
  • 2007-2011ɽ߿⼰()
  • ְҵѧԺҽרҵ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)