定点数和浮点数
- 格式: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、定点数与浮点数区别定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。
MySQL浮点数和定点数
MySQL 分为两种⽅式:浮点数和定点数。
浮点数包括 float(单精度)和 double(双精度),⽽定点数则只有 decimal ⼀种表⽰。
定点数在 MySQL 内部以字符串形式存放,⽐浮点数更精确,适合⽤来表⽰货币等精度⾼的数据。
浮点数和定点数都可以⽤类型名称后加“(M,D)”的⽅式来进⾏表⽰,“(M,D)”表⽰该值⼀共显⽰ M 位数字(整数位+⼩数位),其中 D 位位于⼩数点后⾯,M 和 D ⼜称为精度和标度。
例如,定义为 float(7,4)的⼀个列可以显⽰为-999.9999。
MySQL 保存值时进⾏四舍五⼊,因此如果在 float(7,4)列内插⼊ 999.00009,近似结果是 999.0001。
值得注意的是,浮点数后⾯跟“(M,D)”的⽤法是⾮标准⽤法,如果要⽤于数据库的迁移,则最好不要这么使⽤。
float 和 double 在不指定精度时,默认会按照实际的精度(由实际的硬件和操作系统决定)来显⽰,
⽽ decimal 在不指定精度时,默认的整数位为 10,默认的⼩数位为 0。
CREATE TABLE `t1` (
`id1` float(5,2) default NULL,
`id2` double(5,2) default NULL,
`id3` decimal(5,2) default NULL
)
insert into t1 values(1.23,1.23,1.23);
insert into t1 values(1.234,1.234,1.23);
insert into t1 values(1.234,1.234,1.234);。
第二十三章定点数和浮点数日常生活中,有各种各样的数,整数、分数、百分数等等,我们无时无刻不与这些数打交道。
如:用加班2.75小时获得的1倍半的钱来买半匣鸡蛋需支付8.25%的销售税。
许多人对诸如此类的数都感到很适应,并不需要怎么在行,即使在听到“平均每个美国家庭有2.6人”这样的统计数字的时候,也不会联想到2.6这个数字对人来说是不是要把人肢解了这样可怕的问题。
在计算机内存里,整数和分数的换算是常见的。
存在计算机内存里的东西都是二进制位的形式,也就是说,都是二进制数。
但有些数用位来表示比其他数用位来表示要容易一些。
我们使用位来表示数学上称为自然数而计算机编程人员称为正整型数的数,并介绍如何用2的补码来表示负整数,而这种方法很容易实现正数、负数的加法。
下表列出了8位、16位、32位的正整数及它们的2的补码的范围:数的位数正整数范围2的补码范围80~255-128~127160~65535-32768~32767320~4294967295-2147483648~2147483647要介绍的就是这些。
除了整数以外,数学上还定义了有理数,它们可表示成两个整数的比,这个比也叫分数。
例如,3/4是一个有理数,因为它是3与4的比。
可以把这个数写成小数形式0.75,当写成小数时,它真正表示了分数,在此为75/100。
回忆一下第7章里的小数系统,在小数点左边的数字与10的整数次幂相关联;同样,在小数点右边的数字与10的负整数次幂相关联。
第7章用42705.684作为例子,该数可以表示成与下面与之相等的形式:4×10000+2×1000+7×100+0×10+5×1+6÷10+8÷100+4÷1000注意一下除号,可以把这个序列写成没有除号的形式:4×10000+2×1000+7×100+0×10+5×1+6×0.1+8×0.01+4×0.001最后,可以用10的幂的形式表示如下:有些分数并不容易用小数表示,常见的如1/3。
第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位原码表示定点整数(100)10
(100)10 = (1100100)2
定点整数表示为
例题:用8位原码表示定点纯小数(-0.6875)10
(-0.6875)10 = (-0.1011)2
定点纯小数表示为
定点数表示法简单直观,但是数值表示的范围太小,运算时容易产生溢出。
浮点数
浮点数是小数点的位置可以变动的数。
为增大数值表示范围,防止溢出,采用浮点数表示法。
浮点表示法类似于十进制中的科学计数法。
在计算机中通常把浮点数分成阶码和尾数两部分来表示,其中阶码一般用补码定点整数表示,尾数一般用补码或原码定点小数表示。
为保证不损失有效数字,对尾数进行规格化处理,也就是平时所说的科学记数法,即保证尾数的最高位为1,实际数值通过阶码进行调整。
一般浮点数在机器中的格式为:
阶符表示指数的符号位、阶码表示幂次、数符表示尾数的符号位、尾数表示规格化后的小数值。
N = 尾数×基数阶码(指数)
例题:二进制数-110101101.01101可以写成: -0.11010110101101×21001
这个数在机器中的格式为(阶码用8为表示,尾数用24位表示)
[关闭窗口]。