第3讲 定点运算及浮点运算
计算机理论:浮点数和定点数计算机表示

计算机理论:浮点数和定点数计算机表示浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。
具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。
浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:a = m × b^e。
在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。
m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。
如果m 的第一位是非0整数,m称作规格化的。
有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。
e是指数。
由此可以看出,在计算机中表示一个浮点数,其结构如下:尾数部分(定点小数)阶码部分(定点整数)数符±尾数m 阶符±阶码e这种设计可以在某个固定长度的存储空间内表示定点数无法表示的更大范围的数。
例如,一个指数范围为±4的4位十进制浮点数可以用来表示43210,4.321或0.0004321,但是没有足够的精度来表示432.123和43212.3(必须近似为432.1和43210)。
当然,实际使用的位数通常远大于4。
此外,浮点数表示法通常还包括一些特别的数值:+∞和−∞(正负无穷大)以及NaN('Not a Number')。
无穷大用于数太大而无法表示的时候,NaN则指示非法操作或者无法定义的结果。
众所周知,计算机中的所有数据都是以二进制表示的,浮点数也不例外。
然而浮点数的二进制表示法却不像定点数那么简单了。
先澄清一个概念,浮点数并不一定等于小数,定点数也并不一定就是整数。
所谓浮点数就是小数点在逻辑上是不固定的,而定点数只能表示小数点固定的数值,具用浮点数或定点数表示某哪一种数要看用户赋予了这个数的意义是什么。
第3章-2定点数和浮点数PPT课件全文编辑修改

(2)浮点数的规格化
目的:字长固定的情况下提高表示精度的措施: 1 增加尾数位数(但数值范围减小) 2 采用浮点规格化形式
规格化方法:调整阶码使尾数满足下列关系: 尾数为原码表示时,无论正负应满足1/2<|d |<1 即:小数点后的第一位数一定要为1。 正数的尾数应为0.1x….x 负数的尾数应为1.1x….x 尾数用补码表示时,小数最高位应与数符符号位相反。 正数应满足 1/2≦d<1,即 0.1x….x 负数应满足 -1/2 > d≥ -1,即 1.0x….x
注意: 两操作数的绝对值相乘, 符号位单独处理。 寄存器A.B均设置双符号位,第1符号位始终是部分积符号,决定在右移时第1符号位补0 操作步数由乘数的尾数位数决定,用计数器Cd来计数。即作n次累加和移位。 最后是加符号位,根据Sx⊕Sy决定。
例如将十进制数178.125表示成微机中的单精度浮点数
解:178.125=10110010.001B =1.0110010001x27 指数E=7+127=134=10000110B 127是单精度浮点数应加的指数偏移量,其完整的浮点数形式为 : 0 10000110 011 0010 0010 0000 0000 0000 = 43322000H
3.3.1 定点数一位乘法 1. 定点原码一位乘
规则:在机器中采用A,B,C寄存器来分别存放部分积,被乘数和乘数 (1)在机器内一次加法操作只能求出两数之和,因此每求得一个相加数时,就得与上次部分积相加。 (2)人工计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(或被乘数)的两倍.由于在求本次部分积时,前一次部分积的最低位,不再参与运算,因此可将其右移一位。相加数可直送而不必偏移,于是用N位加法器就可实现两个N位数相乘。 (3)部分积右移时乘数寄存器同时右移一位,这样可以用乘数寄存器的最低位来控制相加数(取被乘数或零),同时乘数寄存器的最高位可接收部分积右移出来的一位,因此,完成乘法运算后,A寄存器中保存乘积的高位部分,乘数寄存器C中保存乘积的低位部分。
定点和浮点数表示

带符号整数:
n+1位
S
|N|≤2n-1
符号位
不带符号整数: n+1
小数点
0≤|N|≤2n+1-1
小数点
(3) 浮点数
浮点数表示法对应于科学(指数)计数法,在计算机中一个浮点数 由两部分构成:阶码和尾数,阶码是指数,尾数是纯小数.
存储格式:
阶符 阶码 数符 尾数
•阶码只能是一个带符号的整数,用来指示尾数中的小数点应当向左 或向右移动的位数,阶码本身的小数点约定在阶码最右面. •尾数表示数值的有效数字,其本身的小数点约定在数符和尾数之间
. •浮点数的正.负是由尾数的数符确定,而阶码的正.负只决定小数点 的位置,即决定浮点数的绝对值大小. •尾数的位数决定数的精度,阶码的位数决定数的范围.
设尾数为4位,阶码为2位,则二进制数N = 101.1(B)的浮点数表示 形式为:
0
11
0 1011ຫໍສະໝຸດ 阶符 阶码 数符 尾数 该数二进制数科学表示法为:N = 0.1011 × 211
四.二进制数在计算机中的表示
1.数的定点和浮点表示
(1)定点小数 指小数点准确固定在数据某一位置上的小数. 一般固定在最高数据位的左边,小数点前边再设一位符号位.
表示方法 N=NsN-1N-2…N-m其中Ns为符号位
S 符号位
小数点
m + 1位 |N|≤1-2-m
(2)定点整数 整数分带符号和不带符号两类,分别表示如下:
第3讲 定点运算及浮点运算

定点数转换为浮点数
x float xq 2Q
浮点数 x=0.5,定标 Q=15, 则定点数=0.5*32768=16384
Q表示 Q15
S表示 S0.15
十进制数表示范围 -1≤X≤0.9999695
Q14
. . . . . . Q1 Q0
S1.14
. . . . . . S14.1 S15.0
定点加法
被加数 加数
0 0 X X X X X X X X X X X X X X
0 0 X X X X X X X X X X X X X X
无溢出 被加数 加数
0 1 X X X X X X X X X X X X X X
0 1 X X X X X X X X X X X X X X
有溢出
定点加法
Q表示法16进制数2000H
Q0表示为8192
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
符 号 位
Q15表示为0.25
小数点的位置
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
小数点的位置
浮点数与定点数的转换关系
浮点数转换为定点数
xq int x 2Q
提高查表法的精度 扩大自变量范围
混合法
提高查表法的精度
扩大查表法的范围
设:表的范围为0.5 ~ 1 ,X为大于0.5的数 则:X m 2e 式中, 0.5 m 1 ,e为整数 log 2 ( X ) log 2 (m 2e ) log 2 (m ) log 2 (2e ) log 2 (m ) e 例如: log 2 (10000) log 2 (0.61035 214 ) log 2 (0.61035) 14 13.2877
N03-定点除法浮点运算

Xi=S3AiBi+S2AiBi
Yi=Ai+S0Bi+S1Bi
Fi=Xi⊕Yi⊕Cn+i
Cn+i+1=Yi+XiCn+i
设 G=Y3+Y2X3+Y1X2X3+Y0X1X2X3 进位发生输出 P =X 0X 1X 2X 3 进位传送输出 (2.37)
则
Cn+4=G+PCn
G、P,有利于实现多片(组)ALU之间的先行进位 先行进位发生器(CLA)
0.1 1 0 1 商q 0.1 0 1 1 0.1 0 0 1 0 x(r0) 被除数小于除数,商0 -0.0 1 0 1 1 2-1y 除数右移1位,减除数,商1 0.0 0 1 1 1 0 r1 得余数r1 -0.0 0 1 0 1 1 2-2y 除数右移1位,减除数,商1 0.0 0 0 0 1 1 0 r2 得余数r2 -0.0 0 0 1 0 1 1 2-3y 除数右移1位,不减除数,商0 0.0 0 0 0 1 1 0 0 r3 得余数r3 -0.0 0 0 0 1 0 1 1 2-4y 除数右移1位,减除数,商1 0.0 0 0 0 0 0 0 1 r4 得余数r4 得x÷y的商q=0.1101,余数为r=0.00000001。
设有n位定点小数(定点整数也同样适用):
被除数x的原码为 [x]原=xf .xn-1„x1x0
除数y的原码为
[y]原=yf .yn-1„y1y0
则有商q=x/y,其原码为
[q]原=(xf⊕yf)+
(0.xn-1„x1x0/0.yn-1„y1y0)
商的符号运算qf=xf⊕yf
设被除数x=0.1001,除数y=0.1011
2.5.2 多功能算术/逻辑运算单元(ALU)
1. 基本思想
一位全加器(FA)的逻辑表达式为 Fi=Ai⊕Bi⊕Ci
定点数和浮点数课件

符号位
表示浮点数的正负,0表示正数,1 表示负数。
指数位
表示浮点数的指数部分,即小数点的 位置。
尾数位
表示浮点数的尾数部分,即小数点后 面的数字。
浮点数的范围和精度
范围
浮点数的范围取决于指数位的位 数和尾数位的位数,一般分为单 精度和双精度两种类型,单精度 范围较小,双精度范围较大。
精度
浮点数的精度取决于尾数位的位 数,位数越多,精度越高,能够 表示的数字越精确。
浮点数定义
浮点数是指小数点位置可以浮动的数 值表示方式,通常用于计算机内部运 算,其小数点位置可以根据需要移动。
浮点数的优点
浮点数的缺点
浮点数表示方式相对复杂,计算机内 部计算浮点数需要更多的时间和空间 资源,同时浮点数容易受到计算机内 部精度限制的影响。
浮点数表示方式的范围广泛,可以表 示非常大或非常小的数值,同时浮点 数精度高,能够准确表示小数。
具体实现可能会有所不同。
在定点数运算中,需要注意溢出、 舍入误差等问题。
一般来说,定点数运算的速度比 浮点数运算要快,因此在需要高 精度计算的情况下,定点数是一
种更好的选择。
2023
PART 03
浮点数的表示方法
REPORTING
浮点数的表示格式
IEEE 754标准
浮点数在计算机中采用IEEE 754标准 进行表示,包括符号位、指数位和尾 数位三个部分。
浮点数的运算规则
01
加减运算
浮点数的加减运算与普通加减运算类似,只需要对尾数位进行加减即可,
指数位不变。
02
乘除运算
浮点数的乘除运算需要将尾数位和指数位分开计算,然后组合得到结果。
乘法时尾数位需要左移一位,除法时尾数位需要右移一位。
浮点运算

简介当我们用不同的电脑计算圆周率时,会发现一台电脑的计算较另一台来讲结果更加精确。
或者我们在进行枪战游戏的时候,当一粒子弹击中墙壁时,墙上剥落下一块墙皮,同样的场面在一台电脑上的表现可能会非常的呆板、做作;而在另外一台电脑上就会非常生动形象,甚至与我们在现实中看到的所差无几。
这都是浮点运算能力的差异导致的。
定点与浮点大学计算机基础中已经了解过计算机的实数表示方法可分为两种即定点与浮点1、定点数:定点数指小数点在数中的位置是固定不变的,通常有定点整数和定点小数。
在对小数点位置作出选择之后,运算中的所有数均应统一为定点整数或定点小数,在运算中不再考虑小数问题。
(1)定义:数据中小数点位置固定不变的数(2)种类:定点整数(3)小数点在符号位与有效位之间。
注:定点数受字长的限制,超出范围会有溢出。
2、浮点数:浮点数的表示形式有点像科学计数法(*.*****×10^***),它的表示形式是0.*****×10^***,在计算机中的形式为 .***** e ±***),其中前面的星号代表定点小数,也就是整数部分为0的纯小数,后面的指数部分是定点整数。
利用这样的形式就能表示出任意一个整数和小数,例如1024就能表示成0.1024×10^4,也就是 .1024e+004,3.1415926就能表示成0.31415926×10^1,也就是 .31415926e+001,这就是浮点数。
浮点数进行的运算就是浮点运算。
注:其浮点数的精度由尾数决定,数的表示范围由阶码决定。
浮点数,这个复杂点,有三种格式单精度:_31_30________23_22___________0符号指数有效数双精度:_63_62__________52_51__________________0符号指数有效数扩展精度数:_79_78____________64_63___________________0符号指数有效数3、定点数与浮点数区别定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。
第3讲 定点运算及浮点运算汇总

结果超过16位的定点加法
例子: 设x=15000,y=20000,则浮点运算结果为z
=x+y=15000+20000=35000,显然z>32767; Qx=1,Qy=0,Qz=0,则定点加法为: x=30000;y=20000; temp=20000<<1=40000; temp=temp+x=40000+30000=70000; z=70000L>>1=35000;
除法运算的C语言定点模拟
z = x/y
zq 2Qz=
xq 2Qx yq 2Qy
zq
xq
2(Qz Qx Qy ) yq
float x,y,z; z = x/y;
int x,y,z;
long temp;
temp = (long)x;
z = (temp<<(Qz-Qx+Qy))/y;
定点除法
0010000000000000
小数点的位置
浮点数与定点数的转换关系
浮点数转换为定点数
xq int x 2Q
定点数转换为浮点数
x floatxq 2Q
浮点数 x=0.5,定标 Q=15, 则定点数=0.5*32768=16384
Q表示 Q15 Q14
. . . . . .
Q1 Q0
DSP芯片的数以2的补码形式表示 数的定标:“小数点” 的位置 Q表示法和S表示法 对定点数而言,数值范围与精度是一对矛盾,一 个变量要想能够表示比较大的数值范围,必须以 牺牲精度为代价。
Q表示法16进制数2000H
Q0表示为8192
0010000000000000
符
号 位 Q15表示为0.25
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
z=x+y
zq 2
Qz
xq 2
= xq 2
Qx
yq 2
yq 2
(Qx Q y )
Qy
Q x
(Qx Q y )
2 Q x
= [ xq y q 2
] 2 Qx
z q [ xq y q 2
(Qx Q y )
] 2(Qz Qx )
验算:由于z的Q值为15,所以定点值z=-3276即
结果超过16位表示范围
设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加 法结果z的定标值为Qz,则定点加法为: int x,y; long temp,z; temp=y<<(Qx-Qy); temp=x+temp; z=temp>>(Qx-Qz),若Qx≥Qz z=temp<<(Qz-Qx),若Qx≤Qz
结果超过16位的定点加法
例子: 设x=15000,y=20000,则浮点运算结果为z =x+y=15000+20000=35000,显然z>32767; Qx=1,Qy=0,Qz=0,则定点加法为: x=30000;y=20000; temp=20000<<1=40000; temp=temp+x=40000+30000=70000; z=70000L>>1=35000;
程序变量的Q值确定
确定变量的Q值实际上就是确定变量的动态范围。 设变量的绝对值的最大值为| max |,取整数n, 使其满足
2
n1
max 2
n
如果某变量的值在-1至+1之间,即<1,因此n = 0,Q=15-n = 15 确定变量的绝对值的最大值 理论分析法 (三角函数、汉明窗、FIR卷积、 自相关线性预测编码等) 统计分析法 (依据足够多的采样值)
2、运算方法
通常的是全部以Q15格式表示的小数
或以Q0格式表示的整数来工作
定点乘法 定点加法 定点除法
定点乘法
• 小数乘小数 • Q15×Q15=Q30 0.5*0.5 = 0.25 0.100000000000000 ;Q15 ×0.100000000000000 ;Q15 00.010000000000000000000000000000=0.25 ;Q30 • LT OP1 ;OP1=4000H(0.5/Q15) MPY OP2 ;OP2=4000H(0.5/Q15) PAC
定点减法
设x=3.0,y=3.1,则浮点运算结果为z=x-y= 3.0-3.1=-0.1; Qx=13,Qy=13,Qz=15,则定点减法为: x=24576;y=25395; temp=25395; temp=x-temp=24576-25395=-819;
因为Qx<Qz,故 z=(int)(-819<<2)=3276。 为浮点值z=-3276/32768-0.1
-2≤X≤1.9999390
. . . . . . -16384≤X≤16383.5 -32768≤X≤32767
加法/减法运算的C语言定点模拟
float x,y,z; z=x+y; 两个操作数的定标值一样 如果加法/减法的结果超出16位的表示范围, 则必须保留32位结果,以保证运算的精度
在通用DSP芯片中,一般不提供单周期的除法 指令,为此必须采用除法子程序来实现 二进制除法是乘法的逆运算。乘法包括一系 列的移位和加法,而除法可分解为一系列的 减法和移位。
定点除法
第一次运算 例如:10÷3=3余1
00001010 00001010 - 00011000 11110010 除数的最低有效位 对齐被除数的最高 有效位
定点数转换为浮点数
x float xq 2Q
浮点数 x=0.5,定标 Q=15, 则定点数=0.5*32768=16384
Q表示 Q15
S表示 S0.15
十进制数表示范围 -1≤X≤0.9999695
Q14
. . . . . . Q1 Q0
S1.14
. . . . . . S14.1 S15.0
• 混合表示法 • 1.5×0.75 = 1.125 01.10000000000000 = 1.5 ;Q14 ×00.11000000000000 = 0.75 ;Q14 0001.0010000000000000000000000000 = 1.125;Q28
定点加法
保留32位结果——双字 调整小数点保留16位结果 加法运算必须用相同的Q点表示 通过移位操作 解决溢出问题 溢出检测 溢出保护 完全避免
乘法运算的C语言定点模拟
z = xy z q 2
Qz
= xq y q 2
(Qx Q y )
Qz (Qx Q y ) z q = ( x q y q )2
float x,y,z; z = xy; int x,y,z; long temp; temp = (long)x; z = (temp×y) >> (Qx+Qy-Qz);
00100001
+
得数为正,左移加一
定点除法
第四次运算
00100001 - 00011000 00001001 00100001 + 11101000 00001001 00010011
得数为正 左移加一 余数
商
定点除法
00001010 - 00011000 11110010舍去 00101000 - 00011000 00010000
00000011
00负,舍去
定点除法
第二次运算
被除数左移一次
00010100 - 00011000 11111100 00010100 + 11101000 11111100
得数为负,舍去
定点除法
第三次运算 被除数左移一次
00101000 - 00011000 00010000 00101000 11101000 00010000
除法运算的C语言定点模拟
z = x/y zq 2Qz= xq 2 Q yq 2 zq
xq 2
( Qz Qx Q y )
Qx
y
yq
float x,y,z; z = x/y; int x,y,z; long temp; temp = (long)x; z = (temp<<(Qz-Qx+Qy))/y;
定点DSP芯片
TMS320C62x
TI公司1997年开发的新型定点DSP芯片,用于无线基站, 无线PDA,Modem, GPS等。 速度快,指令周期为3.3ns,运算能力为2400MIPS 内部结构不同,同时集成有2个16bit乘法器和6个算术 运算单元,一个周期内可执行8条32bit指令 使用超长指令集,在一个周期内可并行执行几个指令 大容量片内存储器(片内有96K程序和512K数据存储器) 和52MB寻址空间
左移加一
00010100 - 00011000 11111100舍去
00100001 - 00011000 00001001 左移加一 00010011
余数 商
非线性运算的定点快速实现
调用DSP编译系统的库函数 查表法
在实时DSP应用中实现非线性运算,一般都采取 适当降低运算精度来提高程序的运算速度。查 表法是快速实现非线性运算最常用的方法。
定点乘法
设x = 18.4,y = 36.8,则浮点运算值为z =18.4×36.8 = 677.12; Qx = 10,Qy = 9,Qz = 5,所以 x = 18841;y = 18841; temp = 18841L; z = (18841L*18841)>>(10+9-5) = 354983281L >>14 = 21666; 因为z的定标值为5,故定点 z = 21666即为 浮点的 z = 21666/32 = 677.08
三、DSP定点运算与浮点运算
数的定标 DSP程序的定点模拟 DSP芯片的定点运算 定点实现非线性函数的快速实现方法 浮点芯片中的数值表示格式 DSP浮点数的基本运算方法
一、定点运算及定点DSP
1、数据格式
2、运算方法
3、定点DSP芯片
1、数据格式
在定点DSP芯片中,采用定点数进行数值运算, 其操作数一般采用整型数来表示 DSP芯片的数以2的补码形式表示 数的定标:“小数点” 的位置 Q表示法和S表示法 对定点数而言,数值范围与精度是一对矛盾, 一个变量要想能够表示比较大的数值范围,必须 以牺牲精度为代价。
定点除法
设x = 18.4,y = 36.8,浮点运算值为z = x/y = 18.4/36.8 = 0.5;
Qx = 10,Qy = 9,Qz = 15;所以有
x = 18841, y = 18841;
temp = (long)18841; z = (18841L<<(15-10+9))/18841 = 308690944L/18841 = 16384; 因为商z的定标值为15,所以定点z = 16384即为浮 点 z = 16384/32768= 0.5
Q表示法16进制数2000H
Q0表示为8192
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
符 号 位
Q15表示为0.25
小数点的位置
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
小数点的位置
浮点数与定点数的转换关系
浮点数转换为定点数