定点数和浮点数
- 格式:ppt
- 大小:587.50 KB
- 文档页数:68
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。
定点数和浮点数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 规则及表⽰⽅法⾸先是对有符号数⽽⾔:1. ⼆进制的最⾼位是符号位:0–>正,1–>负2. 正数的原码,反码,补码⼀样3. 负数的反码==原码的符号位不变,其他的位取反4. 负数的补码==反码+15. 0的反码,补码都是0。
数值0的补码只有⼀个,即:0的补码=00000000B6. 计算机运算的时候都是以补码的⽅式运算的。
2 补充1. (-128)没有相应的原码和反码。
(-128)=(1000 0000)补码2. 采⽤补码的原因:1. 使⽤补码可以使符号位与其他位统⼀进⾏处理。
2. 减法可以按照加法处理。
如果最⾼位(符号位)有进位,则进位就舍弃。
3. 已知补码,求原码:补码的补码。
(因为:对于⼆进制来说先减1后取反和先取反后加1得到的结果是⼀样的)浮点数⼆进制表⽰根据国际标准IEEE 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:V = (-1)s * M * 2E1. (-1)s表⽰符号位,当s=0,V为正数;当s=1,V为负数。
2. M表⽰有效数字,⼤于等于1,⼩于2。
3. 2E表⽰指数位。
(其中2也可以换成别的基),E是⼩数点左移的位数举例来说:⼗进制的-5.0,写成⼆进制是-101.0,相当于-1.01×22。
那么,s=1,M=1.01,E=2。
IEEE 754规定,对于32位的浮点数,最⾼的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。
对于64位的浮点数,最⾼的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。
规则及表⽰⽅法IEEE 754对有效数字M和指数E,还有⼀些特别规定。
前⾯说过,1≤M<2,也就是说,M可以写成1.xxxxxx的形式,其中xxxxxx表⽰⼩数部分。
IEEE 754规定,在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存后⾯的xxxxxx部分。
定点数与浮点数计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
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 的底数。
matlab 定点数浮点数转换
Matlab中,定点数和浮点数的表示方式不同,需要进行相应的转换。
定点数是以固定的位数来表示数值,而浮点数则是根据 IEEE 754 标准来表示,可以表示更广泛的数值范围和精度。
定点数转换为浮点数,可以使用 fi 对象的 double 方法,将定点数转换为双精度浮点数。
例如:
a = fi(3, 1, 8); % 定点数,1 位整数,8 位小数
b = double(a); % 转换为双精度浮点数
浮点数转换为定点数,则需要先确定定点数的位数和精度,然后使用 fi 对象进行转换。
例如:
a = 3.14; % 浮点数
b = fi(a, 1, 8); % 转换为定点数,1 位整数,8 位小数
需要注意的是,在进行定点数和浮点数转换时,可能会存在精度损失的问题。
因此,在实际应用中,需要根据具体情况进行精度控制和误差分析。
- 1 -。
简介当我们用不同的电脑计算圆周率时,会发现一台电脑的计算较另一台来讲结果更加精确。
或者我们在进行枪战游戏的时候,当一粒子弹击中墙壁时,墙上剥落下一块墙皮,同样的场面在一台电脑上的表现可能会非常的呆板、做作;而在另外一台电脑上就会非常生动形象,甚至与我们在现实中看到的所差无几。
这都是浮点运算能力的差异导致的。
定点与浮点大学计算机基础中已经了解过计算机的实数表示方法可分为两种即定点与浮点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、定点数与浮点数区别定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。