数的定点表示和浮点表示
- 格式:docx
- 大小:124.29 KB
- 文档页数:6
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。
因为这种多样性,有必要对其加以规范化以达到统一表达的目标。
定点数与浮点数计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
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 的底数。
计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
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的底数。
简述定点、浮点表示法的区别。
定点表示法和浮点表示法是两种不同的数据表示方式。
定点表示法一般用来表
示固定的数字,其特点是精度较高,但是占用的存储空间也大。
而浮点表示法则更加灵活,能够表示变化的数字,存储空间也比定点表示法小,但是有一定精度损失,这两种表示法互补可以给我们更多的计算机使用选择。
首先,定点表示法是指将数字按照一定的规则固定分成若干部分,比如我们进
行十进制小数表示时,它固定分割出整数部分和小数部分,进而用二进制表示数据,其各个部分存储在固定的的字节大小的内存单元里,使得存储的精度非常高。
但是定点表示法也有缺点,比如处理动态变化的数据时精度会有影响,占用的存储空间也大。
而浮点表示法的概念主要源于数学中的浮点数,即能够在改变参数值的情况下
仍能保持一定的精确度,因此在计算机科学中浮点数也同样可以表示一定范围内变化数据。
相比定点表示法,浮点表示法容易实现,且占用内存空间相对小。
但是在精度上有一定损失,再有国际标准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、定点数与浮点数区别定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。
定点表示方法定义
定点表示法是一种浮点数表示方法,它将浮点数变成固定长度的二进制序列来表示。
它是
一种实用的方法,可以用来表示计算机浮点运算结果。
定点表示法以浮点数表示方式为基础,让浮点数和整数在计算机系统中使用相同的二进制
格式进行表示。
其格式有:以十六进制为精度、符号位+(整数部分)+小数部分。
定点表示法是精确表示浮点数,它在硬件设计上有优势,用它可以大大减少A/D和D/A
转换的计算量,并大大减少设计工作量。
它最重要的优势在于它可以完成许多复杂的运算,比如,多个浮点数的加减乘除运算,复数的三角函数运算等。
同时,它还具有很高的速度,可以比其他浮点数格式更快的完成计算。
因此,定点表示法的出现,使得科学家和数学家更加容易地描述和表示复杂的数学模型,
也更方便地进行解析计算。
定点表示法使我们可以以更准确、更便捷的方式加速计算性能,更高效地完成计算任务。
第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. 表示方法。
定点整数和定点小数使用固定的位数来表示,而浮点数使用科学记数法来表示。
在实际的计算中,需要根据具体的需求来选择合适的表示方法。
在一些要求较高的计算中,可以使用浮点数来表示或者计算;在一些对精度要求较高的计算中,可以使用定点整数和定点小数来进行计算。
小数点的表示为了节省内存,计算机中数值型数据的小数点的位置是隐含的,且小数点的位置既可以是固定的,也可以是变化的。
定点数与浮点数如果小数点的位置事先已有约定,不再改变,此类数称为“定点数”。
相比之下,如果小数点的位置可变,则称为“浮点数”。
⑴定点数。
常用的定点数有两种表示形式:如果小数点位置约定在最低数值位的后面,则该数只能是定点整数;如果小数点位置约定在最高数值位的前面,则该数只能是定点小数。
例如,假定用两个字节存放一个定点数,则以定点方式表示的十进制整数195为:这里,(-0.6876)10=(-0.10110000000001101…)2,转换为无限循环小数,存储时多余的位被截断。
如果知道一个定点数的小数点位置约定和占用存储空间大小,那么很容易确定其表示数的范围。
⑵浮点数。
浮点数表示法来源于数学中的指数表示形式,如193可以表示为0.193x103或1.93x102等。
一般地,数的指数形式可记作:N=M x RC其中,M称为“尾数”,C称为“阶码”。
在存储时,一个浮点数所占用的存储空间被划分为两部分,分别存放尾数和阶码。
尾数部分通常使用定点小数方式,阶码则采用定点整数方式。
尾数的长度影响该数的精度,而阶码则决定该数的表示范围。
同样大小的空间中,可以存放远比定点数取值范围大得多的浮点数,但浮点数的运算规则比定点数更复杂。
1. 什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数。
典型的比如相对于浮点数的定点数(Fixed Point Number)。
在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。
货币的表达就可以使用这种方式,比如99.00 或者00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。
由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。
SQL 中的NUMBER 数据类型就是利用定点数来定义的。
还有一种提议的表达方式为有理数表达方式,即用两个整数的比值来表达实数。
计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
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 处理,称为机器零。
一般来说,增加尾数的位数,将增加可表示区域数据点的密度,从而提高了数据的精度;增加阶码的位数,能增大可表示的数据区域。