数的定点表示和浮点表示
什么是定点数,浮点数
C++中的浮点数有6种,分别是:
float:单精度,32位
unsigned float:单精度无符号,32位
double:双精度,64位
unsigned double:双精度无符号,64位
long double:高双精度,80位
unsigned long double:高双精度无符号,80位(嚯,应该是C++中最长的内置类型了吧!)然而不同的编译器对它们的支持也略有不同,据我所知,很多编译器都没有按照IEEE规定的标准80位支持后两种浮点数的,大多数编译器将它们视为double,或许还有极个别的编译器将它们视为128位?!对于128位的long double我也仅是听说过,没有求证,哪位高人知道这一细节烦劳告知。下面我仅以float(带符号,单精度,32位)类型的浮点数说明C++中的浮点数是如何在内存中表示的。先讲一下基础知识,纯小数的二进制表示。(纯小数就是没有整数部分的小数,讲给小学没好好学的人)
void TestDouble(double value)
...{
int count=0;
string x;
if (value>0)
...{
x+="0"; //判断符号
什么是定点数和浮点数
计算机中的数除了整数之外,还有小数。如何确定小数点的位置呢?通常有两种方法:
浮点数和定点数的区别
cloudseawang定点数与浮点数区别最近做HDR时,经常要用NV提供的16位纹理,它的说明书16位能达到24位的精度,就很奇怪?一直搞不懂浮点数的精度怎么算的?今天认真看了一下IEEE float point的标准,终于明白是什么了1. 什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数。
典型的比如相对于浮点数的定点数(Fixed Point Number)。
在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。
货币的表达就可以使用这种方式,比如99.00 或者00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。
由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。
SQL 中的NUMBER 数据类型就是利用定点数来定义的。
还有一种提议的表达方式为有理数表达方式,即用两个整数的比值来表达实数。
定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。
最终,绝大多数现代的计算机系统采纳了所谓的浮点数表达方式。
这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa ),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。
比如123.45 用十进制科学计数法可以表达为1.2345 × 102 ,其中1.2345 为尾数,10 为基数,2 为指数。
浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。
提示: 尾数有时也称为有效数字(Significand)。
尾数实际上是有效数字的非正式说法。
同样的数值可以有多种浮点数表达方式,比如上面例子中的123.45 可以表达为12.345 ×101,0.12345 × 103 或者1.2345 × 102。
因为这种多样性,有必要对其加以规范化以达到统一表达的目标。
定点数和浮点数
定点数和浮点数 任何⼀个数均可以表⽰为:(N)R=±S×R±e R:基值。
计算机中常⽤的R可取2、8、10、16等。
S:尾数。
代表数N的有效数字。
计算机中⼀般表⽰为纯⼩数。
e:阶码(指数)。
代表数N的⼩数点的实际位置。
⼀般表⽰为纯整数。
⼀、定点数 定点数:约定计算机中所有数据的⼩数点位置均是相同的,⽽且是固定不变的,即阶码e的取值固定不变的机器数表⽰。
定点数的两种表⽰⽅法: 定点⼩数:e=0,表⽰纯⼩数,⼩数点在符号位与最⾼数值位之间。
定点整数:e=n,表⽰纯整数,⼩数点在最低有效数值位之后,在最低位的右边,不占位 【例】 (123.45)10 = 0.12345×103 = 12345×10-2 (11011.101)2 = 0.11011101×105 = 11011101×2-3⼆、浮点数 浮点数⽤类似(N)R=±S×R±e科学计数法来表达,⽐如1001.101的规范浮点数表达为1.001101×23 浮点数的⼩数点位置不是固定,⽽是可以浮动的,即e的取值可变。
利⽤改变e值达到了浮动⼩数点的效果,从⽽灵活地表达更⼤范围地实数。
因此在机器中必须将e表⽰出来。
浮点数的表⽰如图 尾数的位数决定了数据表⽰的精度,为带符号的纯⼩数。
阶码的位数决定了数据表⽰的范围,为带符号的纯整数。
三、浮点数的规格化 (1)如何尽可能多地保留有效数字? (2)如何保证浮点表⽰地唯⼀? 规格化思想:尽可能去掉尾数中的前置“0”,尽量使⼩数点后第⼀位为“1”。
对于⼆进制数,就是要满⾜:1/2≤|S|<1 【例】0.001001×25的规格化 0.001001×25规格化表⽰为:0.100100×23四、原码规格化 若[S]原=Sf.S1S2..Sn,规格化标志是:S1=1,即:[S]原=0.1xx...x 或 [S]原=1.1xx...x。
02-定点与浮点数据表示课件
第二章 2.2 定点与浮点数据表示
2 浮点数据表示 N = (-1)S 2 E-127 1.M
E=0 , M =0 :表示机器零; E=0 , M 0 :则N = (-1)S 2 -126 0.M,非规格化的浮点数; 1 E 254 :N = (-1)S 2 E-127 1.M ,规格化的浮点数;
计算机组成原理
第二章 数据表示
2.2 定点与浮点数据表示
第二章 2.2 定点与浮点数据表示
1 定点数据表示
01
可表示定点小数和整数
02
表现形式:X0.X1X2X3X4……..Xn
定点小数
定点整数
03
定点小数表示数的范围(补码为例): -1 ≤ x ≤ 1-2-n
定点整数表示数的范围(补码为例):-2 n ≤ x ≤2n-1
保存S、E、M
从32位二进制序列中分离出S、E、 M
单精度IEEE754
第二章 2.2 定点与浮点数据表示
2 浮点数据表示 例2
将十进制数20.59375转换成32位IEEE754格式浮点数的二进制格式。
解: 先将十进制数换成二进制数: 20.59375=10100.10011 移动小数点,使其变成1.M的形式 10100.10011=1.010010011×2 4
得到: S=0, e = 4,E= 100+01111111 =10000011,M = 010010011
最后得到32位浮点数的二进制存储格式为: 0100 0001 1010 0100 1100 0000 0000 0000 = 41A4C000H
M: 尾数位数,决定数的精度
第二章 2.2 定点与浮点数据表示
2 浮点数据表示 例1
第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中保存乘积的低位部分。
定点数和浮点数
定点数和浮点数1、定点数(Fixed-Point Number)计算机处理的数据不仅有符号,而且大量的数据带有小数,小数点不占有二进制一位而是隐含在机器数里某个固定位置上。
通常采取两种简单的约定:一种是约定所有机器数的小数的小数点位置隐含在机器数的最低位之后,叫定点纯整机器数,简称定点整数。
另一种约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前,叫定点纯小数机器数,简称定点小数。
无论是定点整数,还是定点小数,都可以有原码、反码和补码三种形式。
2、浮点数(Floating-Point Number)计算机多数情况下采作浮点数表示数值,它与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分:其中:E——N的阶码(Expoent),是有符号的整数S——N的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。
例:1011101B=2+7*0.1011101,101.1101B=2+3*0.1011101,0.01011101B=2-1*0.1011101浮点数的格式如下:阶符阶尾符尾数浮点数由阶码和尾数两部分组成,底数2不出现,是隐含的。
阶码的正负符号E0,在最前位,阶反映了数N小数点的位置,常用补码表示。
二进制数N小数点每左移一位,阶增加1。
尾数是这点小数,常取补码或原码,码制不一定与阶码相同,数N的小数点右移一位,在浮点数中表现为尾数左移一位。
尾数的长度决定了数N的精度。
尾数符号叫尾符,是数N的符号,也占一位。
例:写出二进制数-101.1101B的浮点数形式,设阶码取4位补码,尾数是8位原码。
-101.1101=-0.1011101*2+3浮点形式为:阶码0011 尾数11011101补充解释:阶码0011中的最高位“0”表示指数的符号是正号,后面的“011”表示指数是“3”;尾数11011101的最高位“1”表明整个小数是负数,余下的1011101是真正的尾数。
关于浮点数与定点数的理解
定点数与浮点数计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
1. 定点数表示法(fixed-point)所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。
在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。
一般常称前者为定点小数,后者为定点整数。
定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。
若数据x 的形式为x = x0.x1x2…x n( 其中x0为符号位,x1~x n是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为:一般说来,如果最末位x n = 1,前面各位都为0 ,则数的绝对值最小,即|x|mi n = 2-n。
如果各位均为1,则数的绝对值最大,即|x|ma x =1-2-n 。
所以定点小数的表示范围是:2- n ≤ | x| ≤ 1 - 2- n定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。
若数据x 的形式为x = x0x1x2…x n ( 其中x0为符号位,x1~x n是尾数,x n为最低有效位),则在计算机中的表示形式为:定点整数的表示范围是:1≤ | x| ≤ 2n - 1当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。
计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按其缩小成定点小数或扩大成定点整数再参加运算,运算结果,根据比例因子,还原成实际数值。
若比例因子选择不当,往往会使运算结果产生溢出或降低数据的有效精度。
用定点数进行运算处理的计算机被称为定点机。
2. 浮点数表示法(floating-point number)4与科学计数法相似,任意一个J进制数N,总可以写成N = J E × M式中M称为数N 的尾数(mantissa),是一个纯小数;E为数N 的阶码(e x ponent),是一个整数,J称为比例因子J E 的底数。
定点数和浮点数课件
符号位
表示浮点数的正负,0表示正数,1 表示负数。
指数位
表示浮点数的指数部分,即小数点的 位置。
尾数位
表示浮点数的尾数部分,即小数点后 面的数字。
浮点数的范围和精度
范围
浮点数的范围取决于指数位的位 数和尾数位的位数,一般分为单 精度和双精度两种类型,单精度 范围较小,双精度范围较大。
精度
浮点数的精度取决于尾数位的位 数,位数越多,精度越高,能够 表示的数字越精确。
浮点数定义
浮点数是指小数点位置可以浮动的数 值表示方式,通常用于计算机内部运 算,其小数点位置可以根据需要移动。
浮点数的优点
浮点数的缺点
浮点数表示方式相对复杂,计算机内 部计算浮点数需要更多的时间和空间 资源,同时浮点数容易受到计算机内 部精度限制的影响。
浮点数表示方式的范围广泛,可以表 示非常大或非常小的数值,同时浮点 数精度高,能够准确表示小数。
具体实现可能会有所不同。
在定点数运算中,需要注意溢出、 舍入误差等问题。
一般来说,定点数运算的速度比 浮点数运算要快,因此在需要高 精度计算的情况下,定点数是一
种更好的选择。
2023
PART 03
浮点数的表示方法
REPORTING
浮点数的表示格式
IEEE 754标准
浮点数在计算机中采用IEEE 754标准 进行表示,包括符号位、指数位和尾 数位三个部分。
浮点数的运算规则
01
加减运算
浮点数的加减运算与普通加减运算类似,只需要对尾数位进行加减即可,
指数位不变。
02
乘除运算
浮点数的乘除运算需要将尾数位和指数位分开计算,然后组合得到结果。
乘法时尾数位需要左移一位,除法时尾数位需要右移一位。
简述定点、浮点表示法的区别。
简述定点、浮点表示法的区别。
定点表示法和浮点表示法是两种不同的数据表示方式。
定点表示法一般用来表
示固定的数字,其特点是精度较高,但是占用的存储空间也大。
而浮点表示法则更加灵活,能够表示变化的数字,存储空间也比定点表示法小,但是有一定精度损失,这两种表示法互补可以给我们更多的计算机使用选择。
首先,定点表示法是指将数字按照一定的规则固定分成若干部分,比如我们进
行十进制小数表示时,它固定分割出整数部分和小数部分,进而用二进制表示数据,其各个部分存储在固定的的字节大小的内存单元里,使得存储的精度非常高。
但是定点表示法也有缺点,比如处理动态变化的数据时精度会有影响,占用的存储空间也大。
而浮点表示法的概念主要源于数学中的浮点数,即能够在改变参数值的情况下
仍能保持一定的精确度,因此在计算机科学中浮点数也同样可以表示一定范围内变化数据。
相比定点表示法,浮点表示法容易实现,且占用内存空间相对小。
但是在精度上有一定损失,再有国际标准IEEE 754推荐的浮点表示,依然无法避免产生
舍入误差,进行高精度的计算就很有局限性。
从上述对比可以看出,定点表示法和浮点表示法各有优势,相互交互可以满足
不同的应用场景。
当然,应用层面若想处理浮点数,依然需要进行技术支撑,特别是进行大规模运算时,不仅要求开发者必须理解定点表示法和浮点表示法的基本原理,也还要对算法进行优化提高计算精度。
浮点运算
简介当我们用不同的电脑计算圆周率时,会发现一台电脑的计算较另一台来讲结果更加精确。
或者我们在进行枪战游戏的时候,当一粒子弹击中墙壁时,墙上剥落下一块墙皮,同样的场面在一台电脑上的表现可能会非常的呆板、做作;而在另外一台电脑上就会非常生动形象,甚至与我们在现实中看到的所差无几。
这都是浮点运算能力的差异导致的。
定点与浮点大学计算机基础中已经了解过计算机的实数表示方法可分为两种即定点与浮点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、定点数与浮点数区别定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。
计算机组成原理机器数的定点与浮点、非数值数据的编码表示和数据校验码 (1)
13:41
11
§2.3 机器数的定点与浮点表示
2)精度 所谓精度是指一个数所含有效数值位的位数。 一般来说机器字长越长,它所表示的数的有效位数就越多, 精度就越高:对于字长相同的定点数与浮点数来说,浮点 数虽然扩大了数的表示范围,但这正是以损失精度为代价 的,也就是数轴上各点的排列更稀疏了。
13:41
13:41
10
§2.3 机器数的定点与浮点表示
三、 定点数和浮点数比较
定点数据表示简单,省硬件;浮点数据表示较麻烦, 价格较贵。从以下几个方面来比较它们性能上的主要差距。 1)数值的表示范围 假设定点数和浮点数的字长相同,浮点表示法所能表示的 数值范围将远远大于定点表示法,但是此范围指的只是数 的上下限,它们之间是一些不连续的点,而不是—段连续 的区间。 对于定点数而言,各个点在数轴上的分布是均匀的; 而对于浮点数而言,各个点在数轴上的分布是不均匀的。 越靠近数轴的原点,两个相邻的浮点数之间的距离就越近。
13:41 8
§2.3 机器数的定点与浮点表示
4.浮点数的表示范围
尾数部分给出有效数字的位数,决定了浮点数的表示 精度,尾数占的位数越大,浮点数的表示精度就越高; 阶码部分指明小数点在数据中的位置,决定了浮点 数的表示范围,阶码占的位数越大,浮点数的表示范围 就越大; 通常希望数据表示的范围越大越好、精度越高越好, 但是由于计算机的存储字长是一定的,不能两者兼顾。
• --------在取回这样的浮点数到运算器执行运算时,必须先恢 复该隐藏位。
13:41
7
§2.3 机器数的定点与浮点表示
4. 浮点数的表示范围(阶码用移码表示,尾数用补码表示)
Es,E1 … Em ; Ms . M1 … Mn
2.4 定点数和浮点数的表示方法
明德
浮点数在计算机中的表示格式:
博学
日新
笃行
用定点小数表示,给出有 效数字的位数决定了浮点 数的表示精度
表达指数部分
用整数形式表示,指明小数 点在数据中的位置决定浮点 数的表示范围
河南科技大学
浮点数的表示范围
明德
博学
日新
笃行
假设尾数和阶码均用补码表示,阶码的位数为k+1位,尾数的位数为 n+1位
河南科技大学
浮点数的规格化
明德
博学
日新
笃行
3. 浮点数的规格化: 存储在计算机中的浮点数以及运算结果的浮点数都应为规
格化数,如果尾数不是规格化数,要用移位方法把它变为规格化数, 这种处理过程,称为规格化。
河南科技大学
IEEE754标准
明德
博学
日新
笃行
IEEE754标准定义了四种浮点数的基本格式:单精度格式、 双精度格式、扩展精度格式。
(11001.001)2=(25.125)10
河南科技大学
1111111+110=10000101 该数的单精度数的存浮点数格式即为:
0 10000101 10010001000000000000000 表示成十六进制数:42C88000H
日新
笃行
河南科技大学
IEEE754标准
明德
博学
日新
笃行
例2. 将单精度浮点数C1C90000H转换成十进制数。
解:1)将十六进制数转换成二进制数
C1C90000H=11000001110010010000000000000000
符号位S=1,阶码=10000011
尾数=10010010000000000000000
定点数与浮点数
第3章 DSP 芯片的定点运算3.1 数 的 定 标在定点DSP 芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。
一个整型数的最大表示范围取决于DSP 芯片所给定的字长,一般为16位或24位。
显然,字长越长,所能表示的数的范围越大,精度也越高。
如无特别说明,本书均以16位字长为例。
DSP 芯片的数以2的补码形式表示。
每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。
其余15位表示数值的大小。
因此二进制数0010000000000011b =8195 二进制数1111111111111100b =-4对DSP 芯片而言,参与数值运算的数就是16位的整型数。
但在许多情况下,数学运算过程中的数不一定都是整数。
那么,DSP 芯片是如何处理小数的呢?应该说,DSP 芯片本身无能为力。
那么是不是说DSP 芯片就不能处理各种小数呢?当然不是。
这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。
这就是数的定标。
通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。
数的定标有Q 表示法和S 表示法两种。
表3.1列出了一个16位数的16种Q 表示、S 表示及它们所能表示的十进制数值范围。
从表3.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。
例如:16进制数2000H =8192,用Q0表示 16进制数2000H =0.25,用Q15表示但对于DSP 芯片来说,处理方法是完全相同的。
从表3.1还可以看出,不同的Q 所表示的数不仅范围不同,而且精度也不相同。
Q 越大,数值范围越小,但精度越高;相反,Q 越小,数值范围越大,但精度就越低。
例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为 1/32768 = 0.00003051。
因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。
定点整数,定点小数,浮点数,指数的关系
定点整数、定点小数、浮点数和指数是数学中常见的概念,它们在数字表示和运算中都起着重要的作用。
本文将介绍它们的定义、区别和通联,希望读者通过本文的阐述能够更加深入地理解这些概念。
一、定点整数定点整数是指在固定的位置表示的整数。
在计算机中,定点整数是直接表示整数值的,通常使用一个固定的位数来表示整数部分和小数部分。
8位的定点整数表示形式为sxxxxxxx,其中s表示正负号,x表示整数部分。
由于定点整数的位数是固定的,所以它能够表示的范围是有限的,但在一定的范围内可以得到较高的精度。
二、定点小数定点小数是指小数点位置固定的数。
它和定点整数相似,但是它的小数点位置是固定的,即小数点后面的位数是固定的。
三、浮点数浮点数是指用科学记数法来表示的数。
它由一个有效数字部分和一个指数部分组成。
有效数字部分是一个带小数点的十进制数,指数部分是一个用科学记数法表示的整数。
浮点数的特点是可以表示很大或很小的数,并且对于一些小数运算有比较好的精度。
但是由于浮点数的表示形式是二进制的,所以在表示某些十进制小数时会有精度损失的问题。
四、指数指数是表示数的次方的方法。
指数可以为整数、小数或者是分数。
当指数为整数时,结果很容易计算;当指数为小数或者分数时,结果需要通过计算机程序或者数学公式来计算。
定点整数、定点小数、浮点数和指数的关系可以从以下几个方面来看:1. 表示范围。
定点整数和定点小数的表示范围是固定的,而浮点数的表示范围是可以很大或者很小的。
指数的作用就是可以表示很大或者很小的数。
2. 表示精度。
定点整数和定点小数在一定范围内有较高的表示精度,而浮点数的精度会受到位数限制和表示问题的影响。
指数的作用是可以通过乘方运算来得到某些较大或者较小的数。
3. 表示方法。
定点整数和定点小数使用固定的位数来表示,而浮点数使用科学记数法来表示。
在实际的计算中,需要根据具体的需求来选择合适的表示方法。
在一些要求较高的计算中,可以使用浮点数来表示或者计算;在一些对精度要求较高的计算中,可以使用定点整数和定点小数来进行计算。
DSP-定点和浮点数格式
0.0625 0.125 0.25
0.5 1
3)动态范围
动态范围:数据表示格式中可以表示的最大值与最小值之比
N位定点数的动态范围:
DR
=
fix
(2N
1
1
1) / 2n
/
2n
2N 1 1
用分贝表示为:
DRfix=20 log10 2N1 1 6.02(N 1) dB
00001000b - 00000110b 商数:00001101 余数:00000010b
⑥ ⑦
00000100b - 00000110b 余数(丢弃):11111110b 商数:00011010 余数:00000100b
00001000b - 00000110b 商数: 00110101 余数:00000010b
① 小数乘小数(n、m≠0,m≤ n)
例:两个相乘数分别为Q7和Q6格式,8位字长
两个定点小数作乘法运算,结果左移一位,保存高位得到 运算结果,结果为Qm(m≤ n)格式
0.1000000b(0.5 Q7 )
01.100000b(1.5 Q6 )
000.1100000000000b(0.75 Q13)
对于负数(最高位MSB为1),要先把它转化为无符号二进制数,再进 行计算,最后加上负号
位
7 MSB
6
5
4
3
2
1
0 LSB
二进制补码 0
1
0
1
0
0
1
1
Q0
符号 26
252423源自222120
Q4
符号 22
21
20
第5讲_浮点数四则运算
二、浮点乘除运算
x = Sx · 2 1. 乘法
jx
y = Sy · 2
jy
x · = (Sx · y)×2 y S
2. 除法
jx+jy
x = Sx × 2jx – jy y Sy
3. 步骤 (1) 阶码采用 补码定点加(乘法)减(除法)运算
(2) 尾数乘除同 定点 运算 (3) 规格化
4. 浮点运算部件 阶码运算部件,尾数运算部件
[Ex]补=00 100 [Ey]补=00 100 [-Ex]补=11 100 [Mx]补=00 0011011011 [My]补=11 01010100
(2)尾数相加 用补码的加法公式 [My]补= 11 01010100 [Mx+My]补=[Mx]补+[My]补 = 00 0011011011+ 11 01010100 =11 1000101011
58二进制形式定点表示浮点规格化形式0001011111定点机中浮点机中当浮点数尾数为时不论其阶码为何值按机器零处理当浮点数阶码等于或小于它所表示的最小10当阶码用移码尾数用补码表示时机器零为电路的实现当阶码和尾数都用补码表示时机器零为ieee754短实数长实数临时实数符号位尾数总位数2332115264156480小数点位置尾数为规格化表示的有效位最高位为1隐含1001对阶
浮点数的阶码通常用补码或移码表示。 移码公式: 把[X]补符号 [X]移= 2n + X -2n≤ X< 2n 位取反即可 得[X]移 移码特点:
(1)0表示负数,1表示正数 (2)只执行加减运算,且需要对得到的结果加以修正,即对 结果的符号位取反。
零的移码唯一
[X]移=10000
浮点数的机内表示有下面二种格式:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
1. 定点数表示法(fixed-point)
所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。
在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。
一般常称前者为定点小数,后者为定点整数。
定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。
若数据x的形式为x=x0.x1x2…
xn(其中x0为符号位,x1~xn是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为:
一般说来,如果最末位xn= 1,前面各位都为0,则数的绝对值最小,即|x|min= 2-n。
如果各位均为1,则数的绝对值最大,即|x|max=1-2-n。
所以定点小数的表示范围是:
2-n≤|x|≤1 -2-n
定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。
若数据x的形式为x=x0x1x2…xn(其中x0为符号位,x1~xn是尾数,xn为最低有效位),则在计算机中的表示形式为:
定点整数的表示范围是:
1≤|x|≤2n-1
当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。
计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按其缩小成定点小数或扩大成定点整数再参加运算,运算结果,根据比例因子,还原
成实际数值。
若比例因子选择不当,往往会使运算结果产生溢出或降低数据的有效精度。
用定点数进行运算处理的计算机被称为定点机。
2. 浮点数表示法(floating-point number)
与科学计数法相似,任意一个J进制数N,总可以写成
N = J E×M
式中M称为数N的尾数(mantissa),是一个纯小数;E为
数N的阶码(exponent),是一个整数,J称为比例因子J E的底数。
这种表示方法相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点表示法。
底数是事先约定好的(常取2),在计算机中不出现。
在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。
尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。
二是要给出阶码,用整数形式表示,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。
浮点数也要有符号位。
因此一个机器浮点数应当由阶码和尾数及其符号位组成:
其中ES表示阶码的符号,占一位,E1~En为阶码值,
占n位,尾符是数N 的符号,也要占一位。
当底数取2 时,二进制数N 的小数点每右移一位,阶码减小1,相应尾数右移一位;反之,小数点每左移一位,阶码加1,相应尾数左移一位。
若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。
例如11.01也可以表示成0.011012-3,
0.1101×2-2等等。
为了提高数据的表示精度,当尾数的值不为0时,其绝对值应大于等于0.5,即尾数域的最高有效位应为1,否则要以修改阶码同时左右移小数点的方法,使其变成这一要求的表示形式,这称为浮点数的规格化表示。
当一个浮点数的尾数为0时,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成0值,称为机器零。
浮点数所表示的范围比定点数大。
假设机器中的数由8位二进制数表示(包括符号位):在定点机中这8位全部用来表示有效数字(包括符号);在浮点机中若阶符、阶码占3位,尾
符、尾数占5位,在此情况下,若只考虑正数值,定点机小数表示的数的范围是0.0000000到0.1111111,相当于十进制数的0到127/128,而浮点机所能表示的数的范围则是2- 11×0.0001到211×0.1111,相当于十进制数的1/128到7.5。
显然,都用8位,浮点机能表示的数的范围比定点机大得多。
尽管浮点表示能扩大数据的表示范围,但浮点机在运算过程中,仍会出现溢出现象。
下面以阶码占3位,尾数占5位(各包括1位符号位)为例,来讨论这个问题。
图2-1 给出了相应的规格化浮点数的数值表示范围。
图2-1规格化浮点数分布示意图
图2-1 中,“可表示的负数区域”和“可表示的正数区域”及“0”,是机器可表示的数据区域;上溢区是数据绝对值太大,机器无法表示的区域;下溢区是数据绝对值太小,机器无法表示的区域。
若运算结果落在上溢区,就产生了溢出错误,使得结果不能被正确表示,要停止机器运行,进行溢
出处理。
若运算结果落在下溢区,也不能正确表示之,机器当0 处理,称为机器零。
一般来说,增加尾数的位数,将增加可表示区域数据点的密度,从而提高了数据的精度;增加阶码的位数,能增大可表示的数据区域。