定点数和浮点数

合集下载

什么是定点数,浮点数

什么是定点数,浮点数
尾数都省去了第1位的1,所以在还原时要先在第一位加上1。它可能包含整数和纯小数两部分,也可能只包含其中一部分,视数字大小而定。对于带有整数部分的浮点数,其整数的表示法有两种,当整数大于十进制的16777215时使用的是科学计数法,如果小于或等于则直接采用一般的二进制表示法。科学计数法和小数的表示法是一样的。
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。

定点数和浮点数

定点数和浮点数

定点数和浮点数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 的底数。

定点数和浮点数课件

定点数和浮点数课件

符号位
表示浮点数的正负,0表示正数,1 表示负数。
指数位
表示浮点数的指数部分,即小数点的 位置。
尾数位
表示浮点数的尾数部分,即小数点后 面的数字。
浮点数的范围和精度
范围
浮点数的范围取决于指数位的位 数和尾数位的位数,一般分为单 精度和双精度两种类型,单精度 范围较小,双精度范围较大。
精度
浮点数的精度取决于尾数位的位 数,位数越多,精度越高,能够 表示的数字越精确。
浮点数定义
浮点数是指小数点位置可以浮动的数 值表示方式,通常用于计算机内部运 算,其小数点位置可以根据需要移动。
浮点数的优点
浮点数的缺点
浮点数表示方式相对复杂,计算机内 部计算浮点数需要更多的时间和空间 资源,同时浮点数容易受到计算机内 部精度限制的影响。
浮点数表示方式的范围广泛,可以表 示非常大或非常小的数值,同时浮点 数精度高,能够准确表示小数。
具体实现可能会有所不同。
在定点数运算中,需要注意溢出、 舍入误差等问题。
一般来说,定点数运算的速度比 浮点数运算要快,因此在需要高 精度计算的情况下,定点数是一
种更好的选择。
2023
PART 03
浮点数的表示方法
REPORTING
浮点数的表示格式
IEEE 754标准
浮点数在计算机中采用IEEE 754标准 进行表示,包括符号位、指数位和尾 数位三个部分。
浮点数的运算规则
01
加减运算
浮点数的加减运算与普通加减运算类似,只需要对尾数位进行加减即可,
指数位不变。
02
乘除运算
浮点数的乘除运算需要将尾数位和指数位分开计算,然后组合得到结果。
乘法时尾数位需要左移一位,除法时尾数位需要右移一位。

matlab 定点数 浮点数 转换

matlab 定点数 浮点数 转换

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、定点数与浮点数区别定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。

01-3数的定点表示和浮点表示

01-3数的定点表示和浮点表示

1 1 符 号
1
0
1
1
0
1
数值位(n位)
2-n |N| 1-2-n
纯小数
小数点 1 1 符 号 1 0 1 1 0 1
1 |N| 2n
数值位(n位) 小数点
纯整数
定点机中,一切参加运算的数及最后结果, 都不能超出其域范围,否则会出现错误结果。
若运算数(或结果)小于2-n (或1) 则计算机
作0处理;若大于1-2-n (或2n )。机器作溢出处 理,迫使机器停止运行或转入出错处理程序。
1.3.2 数的浮点表示
受机器数位的限制,定点数的数域
较小。若既要能表示较小的数,又能表 示很大的数,定点表示不适合了,应采 用浮点表示的数。
浮点数表示法 先以十进制数为例:
N = 25.0 = 100×25.0 = 101×2 . 5 = 102×0 . 25
指数部 尾数部 分10J 分S
浮点数由两部分组成:N = 10J×S
其中:S为数N的尾数,即它的符号和有 效数位。指数10 J ,其中10为十进制数的基数, J为其指数(或称J为N的阶),10J决定小数点浮 动的位置。J为正数小数点左移。反之右移。
类此,二进制浮点数的表示形式为:
N = 2J × S 此中,J若以二进制代码表示,则J称N的阶 码。
1.3.3 浮点数与定点数的比较
• 浮点数的表示范围比定点数大 • 浮点数的运算精度比定点数高 • 浮点数的运算比定点数复杂。
(要分阶码和尾数两部分进行运算)
小型机--采用定点数
大、中型机--采用浮点数
欢迎进入1.4学习。
1.3
数的定点表示与浮点表示
数的定点表示 数的浮点表示 浮点数与定点数的比较

MySQL浮点数和定点数

MySQL浮点数和定点数

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定点数和浮点数

2定点数和浮点数
1. 数的定点表示方法
(1). 定点整数——小数点位置固定在数的最低位之后 如: Dn-1 Dn-2 • • • • • • D1 D0 . பைடு நூலகம்围: 2n-1 -1 ~ -2n-1 (采用字长n=16位补码时其 值为32767 ~ -32768) (2). 定点小数——小数点位置固定在数的符号位之后、数值
5
2. 求Y= -256.5 的第一种浮点表示格式
Y=-(256. 5)10 =-(100000000.1)2 =-0.1000000001 x2+9 8位阶码为:(+9)补=0000 1001 24位尾数为:(-0.10 0000 0001)补 =1.011 1111 1110 0000 0000 0000 所求-256.5的浮点表示格式为: 0000 1001 1011 1111 1110 0000 0000 0000 用16进制表示此结果则为:(09BFE000)16
X D2
尾数值
① ②
J
阶符
Em-2…….E0
阶码值
J
S
数符
D-1……D-(n-1)
. .
S
J Em-2
…….E0
D-1……D-(n-1)
尾数值
数符 阶符
阶码值
通常,阶码为补码或移码定点整数,尾数为补码或原码 定点小数。
2
(2)浮点数的规格化
目的:字长固定的情况下提高表示精
度的措施: 1 增加尾数位数(但数值范围减小) 2 采用浮点规格化形式
最高位之前。
如:D0. D-1 • • • • • • D-(n-2) D-(n-1) 范围:1 - 2-(n-1) ~ -1 (采用字长n=16位时其值为 32767/32768 ~ -1) 其中n表示字长多少位

2.4 定点数和浮点数的表示方法

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

二十三章定点数和浮点数

二十三章定点数和浮点数

第二十三章定点数和浮点数日常生活中,有各种各样的数,整数、分数、百分数等等,我们无时无刻不与这些数打交道。

如:用加班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位表示)
[关闭窗口]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)部分积右移时乘数寄存器同时右移一位,这样可 以用乘数寄存器的最低位来控制相加数(取被乘数或 零),同时乘数寄存器的最高位可接收部分积右移出来 的一位,因此,完成乘法运算后,A寄存器中保存乘积 的高位部分,乘数寄存器C中保存乘积的低位部分。 23
例:设X=0.1101,Y=0.1011,求X•Y. 其中寄存器B=X ,Cd=4.流程图3.6
8位阶码为:(+9)补=0000 1001
24位尾数为:(+0.10 0000 0001)补
=0.100 0000 0010 0000 0000 0000
所求256.5的浮点表示格式为:
0000 1001 0100 0000 0010 0000 0000 0000
用16进制表示此结果则为:(09402000)16
3.2.3 定点数和浮点数 计算机中的两种表示方式
数值范围:一种数据类型所能表示的最大值和 最小值
数据精度:实数所能表示的有效数字位数。
数值范围和数据精度均与使用多少位二进制位
数以及编码方式有关。
计算机用数字表示正负,隐含规定小数点。 采用“定点”、“浮点”两种表示形式。
1
1. 数的定点表示方法
6
2. 求Y= -256.5 的第一种浮点表示格式
Y=-(256. 5)10 =-(100000000.1)2 =-0.1000000001 x2+9 8位阶码为:(+9)补=0000 1001 24位尾数为:(-0.10 0000 0001)补 =1.011 1111 1110 0000 0000 0000 所求-256.5的浮点表示格式为: 0000 1001 1011 1111 1110 0000 0000 0000 用16进制表示此结果则为:(09BFE000)16
步数与最后一步操作:乘数有效位是4位,共 作5步。注意,最后一步不移位因为这一步 是用来处理符号位的。
28
3.4.1 定点除法运算
1.定点原码一位除法
有恢复余数法和不恢复余数法(加减交替法),计算机中常用
后者。因为它的操作步骤少,而且也不复杂。其处理思想是:先 减后判,如减后发现不够减,则在下一步改作加除数操作。这样 操作步骤固定易于编程。其要点如下:
-1022
-16382
+1023
+16383
10-308~10+308
12
微机中浮点数表示成规格化形式,如下图所示:
单精度 双精度 扩展精度
31 30 23 22
0
符号位 阶 码 尾数有效位

63 62 符号位 阶
52 51
0
码 尾数有效位

79 78 符号位 阶
64 63
0
码 尾数有效位
7
(3) 溢出问题
定点数的溢出——根据数值本身判断 浮点数的溢出——根据规格化后的阶码判断
上溢——浮点数阶码大于机器最大阶码—— 中断
下溢——浮点数阶码小于机器最小阶码—— 零处理
溢出的具体判断方法将结合实例在后续课程中介绍
8
3. 微机中所能表示的数值类型
(1)无符号二进制数(字节、字和双字) (2)带符号的二进制定点整数形式(16、
5
例题:设某机器用32位表示一个实数,阶码部分8位 (含1位阶符),用定点整数补码表示;尾数部分24 位(含数符1位),用规格化定点小数补码表示,基 数为2。则:
1. 求X=256.5 的第一种浮点表示格式
X=(256. 5)10 =+(100000000.1)2 =+(0.1000000001 x 2+9 )2
(1)要求被除数|X|<除数|Y|,并取原码尾数的绝对值相除;符号 位单独处理,商的符号为相除两数符号的半加和。
计算过程如下:部分积 A源自乘数 C00 0000
1011
+x
00 1101
右移一位→
+x
00 1101 00 0110 00 1101
1 1 0 1 1(丢失)
右移一位→
+0
01 0011 00 1001 00 0000
1 1 1 0 1(丢失)
右移一位→
+x
00 1001 00 0100 00 1101
尾数为原码表示时,无论正负应满足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
32、64位补码表示)和18位BCD码整数形 式(80bit)。 (3)浮点数(IEEE754标准) 包括数符 S、阶码E和尾数D三个字段。
9
微机中的四种整数类型
整数类型 数值范围 精 度 格 式 16位整数 -32768~32767 二进制16位 补码表示
短整数 -231~ 231-1 二进制32位 补码表示 长整数 -263~ 263-1 二进制64位 补码表示 BCD整数 -1018+1~1018-1 十进制18位 80个二进 制其中最左面1字节的最高位是符号位,余7位无 效;另外72位是18位BCD码,原码表示。
15
3.2.4 数字化信息的编码及表示
计算机进行数据处理和运算,就必须首先实 现数字化表达。
另外由于计算机除了数据处理和运算外,还 要进行各种文字(特别是中文)的处理与编辑。因 此,所有由计算机处理的信息也要用数字进行编 码。这样在物理机制上可以以数字信号表示.
16
信息的数字化表示形式
数字信号:是一种在时间上或空间上离散 的信号,单个信号是常用的二值逻辑(0或 1),依靠多位信号组合表示广泛的信息.
Yi Yi+1
操作
00
原部分积右移一位
01
原部分积加X补后再右移一位
10
原部分积加[-X补]后再右移一位
11
原部分积右移一位
26
例3.35:设X=-0.1101,Y=0.1011,即[X]补=11.0011,[Y]补=0.1011 ,[-X]=00.1101 求
[X•Y]补. 计算过程如下:
部分积
14
例:将下面Pentium机中的单精度浮点数 表示成十进制真值是多少?
0011 ,1111,0101,1000,0000,0000,0000,0000
数符:S=(-1) 0=1 (正号) 阶码: E=(01111110)2-127=126-127= -1 尾数: D=(1.1011)2 X= 1.1011x2-1= (0.11011)2=0.84375
最后是加符号位,根据Sx⊕Sy决定。25
2.定点补码一位乘法
实现补码乘法有两种方法,现在广泛使用的是
Booth算法,也称为比较法。这种方法在机器实 现中要在乘数末位Yi之后再增加一个附加位Yi+1, 并令其初始值为0。然后根据比较Yi、 Yi+1的值决 定下一步操作,规则如下:(部分积初始为0)
11
微机中三种不同类型浮点数的格式
参数
单精度
双精度 扩展精度
浮点数长度(位)
32 64
80
符号位数
1
1
1
尾数长度 P(位) 23+1(隐) 52+1(隐) 64
阶码 E 长度(位) 8
最大阶码
+127
11
15
+1023
+16383
最小阶码 阶码偏移量 表示数范围
-126 +127 10-38~10+38
(1). 定点整数——小数点位置固定在数的最低位之后
. 如: Dn-1 Dn-2 • • • • • • D1 D0
范围: 2n-1 -1 ~ -2n-1 (采用字长n=16位补码时其 值为32767 ~ -32768)
(2). 定点小数——小数点位置固定在数的符号位之后、数值
最高位之前。
. 如:D0 D-1 • • • • • • D-(n-2) D-(n-1)
11 0110

11 1011
0010 1 0
右移一位
+
00 1101
Y2Y1=01 +[-X]补
00 1000

00 0100
0001 0 1
右移一位
+
11 0011
Y1Y0=10 +[X]补
11 0111
0001
乘积高位
乘积低位
27
[X•Y]补=1.01110001, X•Y=-0.10001111
范围:1 - 2-(n-1) ~ -1 (采用字长n=16位时其值为 32767/32768 ~ -1)
其中n表示字长多少位
2
2. 数的浮点表示方法
(1) 浮点数的表示:是把字长分成阶码和
尾数两部分。其根据就是:
X

D• 2E
① J Em-2…….E0J S D-1……D-(n-1)
阶符
阶码值
数符 . 尾数值
(1)在机器内一次加法操作只能求出两数之和,因此 每求得一个相加数时,就得与上次部分积相加。
(2)人工计算时,相加数逐次向左偏移一位,由于最 后的乘积位数是乘数(或被乘数)的两倍.由于在求本 次部分积时,前一次部分积的最低位,不再参与运算, 因此可将其右移一位。相加数可直送而不必偏移,于是 用N位加法器就可实现两个N位数相乘。
20
数字化方法表示信息的优点:
抗干扰能力强,可靠性高; 位数增多则数的表示范围可扩大; 物理上容易实现,并可存储; 表示信息的范围与类型极其广泛; 能用逻辑代数等数字逻辑技术进行处理.
相关文档
最新文档