第3章 2.定点数和浮点数
- 格式:ppt
- 大小:585.00 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。