浮点数计算方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理硬件比较简单。而浮点格式容许的数值范围很大,但要求的 处理硬件比较复杂。
1. 定点数的表示方法
定点表示:约定机器中所有数据的小数点位置是固定不变的。 由于约定在固定的位置,小数 点就不再使用记号“.”来表示。通常将数据表示成纯小数或纯整 数。
定点数x=x0x1x2…xn 在定点机中表示如下(x0:符号位,
[例2] 将(20.59375)10转换成754标准的32位浮点 数的二进制存储格式。
[例1] 若浮点数x的754标准存储格式为
(41360000)16,求其浮点数的十进制数值。
[解:] 将十六进制数展开后,可得二进制数格式为
指数e=阶码-127=10000010-01111111=00000011=(3)10 包括隐藏位1的尾数
单元中分别予以表示,这种把数的范围和精度分别表示的方法,相当
于数的小数点位置随比例因子的不同而在一定范围内自由浮动,称为
浮点表示法。
任意一个十进制数N 可以写成
N=10E.M
(2.3)
同样在计算机中一个任意进制数N 可以写成
N=Re.M
(2.4)
M :尾数,是一个纯小数。
e :比例因子的指数,称为浮点数的指数,是一个整数。
R :比例因子的基数,对于二进计数值的机器是一个常数,一般规定
R 为2,8或16。
一个机器浮点数由阶码和尾数及其符号位组成(尾数:用定点 小数表示,给出有效数字的位数决定了浮点数的表示精度;阶码: 用整数形式表示,指明小数点在数据中的位置,决定了浮点数的 表示范围。):
32位浮点数的IEEE754标准格式为: 64位浮点数的IEEE754标准格式为:
20.59375=10100.10011
然后移动小数点,使其在第1,2位之间
10100.10011=1.010010011×24
e=4
于是得到:
S=0,
E=4+127=131,
M=010010011
最后得到32位浮点数的二进制存储格式为: 0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16
4. 自定义数据表示
在传统的计算机体系结构中,用指令本身来说明操作数据的 类型。如定点加法表示操作数是纯小数或纯整数;浮点加法表 示操作数是浮点数;十进制加法表示操作数是BCD数。由于操作 数据类型不同,要设三种不同的指令(操作码)来加以区分。
自定义数据表示则用数据本身来说明数据类型。表示形式有 两种,即标志符数据表示和描述符数据表示。
描述符标志位
特征标记 数据块长度
数据块起始地址
2.1.2 数的机器码表示
在计算机中对数据进行运算操作时,为了妥善的处理好符号 位问题,就产生了把符号位和数字位一起编码来表示相应的数的 各种表示方法,如原码、补码、反码、移码等。为了区别一般书 写表示的数和机器中这些编码表示的数,通常将前者称为真值, 后者称为机器数或机器码。 常用的机器码表示法:
0代表正号,1代表负号):
纯小数的表示范围为(x0x1x2…xn 各位均为0时最小;各位
均为1时最大)
0≤|x|≤1-2-n
(2.1) 纯整数的表示范围

0≤|x|≤2n-1
(2.2)
目前计算机中多采用定点纯整数表示,因此将定点数表示
的运算简称为整数运算。
2. 浮点数的表示方法
电子的质量(9×10-28克)和太阳的质量(2×1033克)相差甚远, 在定点计算机中无法直接来表示这个数值范围.要使它们送入定 点计算机进行某种运算,必须对它们分别取不同的比例因子, 使其数值部分绝对值小于1,即:
7–3=4
7+9=4
以12取模数(mod12)
-3 = +9
(mod12)
采用补码表示法进行减法运算就比原码方便得多了。因为不
论数是正还是负,机器总是做加法,减法运算可变为加法运算。
关键是我们需要换算出两个操作数的补码表示。
若定点小数补码形式为x0 .x1x2…xn ,则补码表示的定义是:
[x] = 补
标志符数据表示要求对每一个数据都附加标志符。其指明后面的 数据所具有的类型,如整数、浮点数、BCD数、字符串等,其格 式如下:
标识符
数据
描述符数据表示主要用来描述多维结构的数据类型,如向量、 矩阵、记录等。描述符标志位部分指明这是一个数据描述符; 特征标记部分指明数据的各种特征;长度部分指明数组中元素 个数;起始地址部分指明数据块的首地址。 其格式为:
{
x 2+x=2-|x|
1>x≥0 0≥x≥-1
(mod 2)
若定点整数补码形式为x0 x1x2…xn ,则补码表示的定义是:
[x] = 补
{
x 2n+1+x=2n+1-|x|
2n>x≥0 0≥x≥-2n
(mod 2n+1)
根据补码定义,求负数的补码要从2减去|x|。为了用加法代替减法,结果还得在求补码时作一次减法,这显然 是不方便的。下面介绍的反码表示法可以解决负数的求补问题。
3. 反码表示法
所谓反码,就是二进制的各位数码0变为1,1变为0。也就是 说,若Xi=1,则反码为xi=0;若xi=0,则反码xi=1。数值上面的一 横表示反码的意思。在计算机中用触发器寄存数码,若触发器Q 端输出表示原码,则其Q端输出就是反码。由此可知,反码是容 易得到的。
若定点小数反码形式为x0 .x1x2…xn ,则反码表示的定义是:
2. 补码表示法
我们先以钟表对时为例说明补码的概念。假设现在的标准时
间为4点正; 而有一只表已经7点了,为了校准时间,可以采用两
种方法:一是将时针退 7-4=3 格;一是将时针向前拨12-3=9格。
这两种方法都能对准到4点,由此可以看出,减3和加9是等价的,
就是说9是(-3)对12的补码,可以用数学公式表示:
1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有
x=(-1)s×1.M×2e =+(1.011011)×23=+1011.011=(11.375)10
[例2] 将(20.59375)10转换成754标准的32位浮点 数的二进制存储格式。
[解:] 首先分别将整数和分数部分转换成二进制数:
[x] = 原
{x
2n-x=2n+|x|
2n>x≥0 0≥x>-2n
对于0,原码机器中往往有“+0”、“-0”之分,故有两种形 式:
[+0]原 = 0.000...0 [ -0]原 = 1.000...0
采用原码表示法简单易懂,但它的最大缺点是加法运算复 杂。这是因为,当两数相加时,如果是同号则数值相加;如果 是异号,则要进行减法。而在进行减法时还要比较绝对值的大 小,然后大数减去小数,最后还要给结果选择符号。为了解决 这些矛盾,人们找到了补码表示法。
当阶码E 为全0且尾数M 也为全0时,表示的真值x 为零,结合 符号位S 为0或1,有正零和负零之分。当阶码E 为全1且尾数M 为 全0时,表示的真值x 为无穷大,结合符号位S 为0或1,也有+∞ 和-∞之分。这样在32位浮点数表示中,要除去E 用全0和全 1(255)10表示零和无穷大的特殊情况,指数的偏移值不选 128(10000000),而选127(01111111)。对于规格化浮点数,E 的范 围变为1到254,真正的指数值e 则为-126到+127。因此32位浮点 数表示的绝对值的范围是10-38~1038(以10的幂表示)。
2n>x≥0 0≥x>-2n
我们比较反码与补码的公式,对于负数有:
定点小数 [x]反=(2-2-n)+x [x]补=2+x
可得到 [x]补=[x]反+2-n
定点整数 [x]反= (2n+1-1)+x [x]补= 2n+1+x
可得到 [x]补=[x]反+1
这就是通过反码求补码的重要公式。这个公式告诉我们,若 要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0, 然后在最末位(2-n)上加1。
第二章 运算方法和运算器
2.1 数据与文字的表示方法 2.2 定点加法、减法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算方法和浮点运算器
2.1 数据与文字的表示方法
2.1.1 数据格式
计算机中常用的数据表示格式有两种: 1 定点格式 2 浮点格式 一般来说,定点格式容许的数值范围有限,但要求的处
4. 移码表示法
移码通常用于表示浮点数的阶码。由于阶码是个n位的整
数,假定定点整数移码形式
为 x0x1x2…xn时,对定点整数移码的传统定义是:
[x]移=2n+x
2n>x≥-2n
若阶码数值部分为5位,以x表示真值, 则: [x]移=25+x 25>x≥- 25
小结:上面的数据四种机器表示法中,移码表示法主要用于 表示浮点数的阶码。由于补码表示对加减法运算十分方便, 因此目前机器中广泛采用补码表示法。在这类机器中,数用 补码表示,补码存储,补码运算。也有些机器,数用原码进 行存储和传送,运算时改用补码。还有些机器在做加减法时 用补码运算,在做乘除法时用原码运算。
1. 原码表示法 2. 补码表示法 3. 反码表示法 4. 移码表示法
1. 原码表示法
若定点小数的原码形式为x0 .x1x2…xn ,则原码表示的定 义是:
[x] = 原
{
x 1-x=1+|x|
1>x≥0 0≥x>-1
式中[x]原是机器数,x是真值
若定点整数的原码形式为x0 x1x2…xn ,则原码表示的定 义是
3. 十进制数串wenku.baidu.com表示方法
目前,大多数通用性较强的计算机都能直接处理十进制形式 表示的数据。十进制数串在计算机内主要有两种表示形式:
(1) 字符串形式:一个字节存放一个十进制的数位或符号位。 为了指明这样一个数,需要给出该数在主存中的起始地址和位 数(串的长度)。
(2) 压缩的十进制数串形式:一个字节存放两个十进制的数位。 它比前一种形式节省存储空间,又便于直接完成十进制数的算 术运算,是广泛采用的较为理想的方法。
在IEEE754标准格式表示的32位浮点数中, S:浮点数的符号位,1 位, 0表示正数,1表示负数。 M:尾数,23位,用小数表示, 小数点放在尾数域的最前面。
E:阶码,8 位阶符采用隐含方式, 即采用移码方式来表示正负指数。
移码方法对两个指数大小的比较和对阶操作都比较方便,因为
阶码域值大者其指数值也大。采用这种方式时,将浮点数的指
9 × 10-28=0.9 × 10-27 2 × 1033=0.2 × 1034
这里的比例因子10-27 和 1034要分别存放在机器的某个存储 单元中,以便以后对计算结果按这个比例增大。显然这要占用 一定的存储空间和运算时间。因此得到浮点表示法如下:
浮点表示法:把一个数的有效数字和数的范围在计算机的一个存储
[x] = 反
{x
(2-2-n)+x
1>x≥0 0≥x>-1
一般情况下,对正数和负数的x值,
x=+0.x1x2…xn,则[x]反=0.x1x2…xn x=-0.x1x2…xn,则[x]反=1.x1x2…xn
若定点整数反码形式为x0 x1x2…xn ,则反码表示的定义是:
[x] = 反
{x
(2n+1-1)+x
数真值e 变成阶码E 时,应将指数 e 加上一个固定的偏移值 127(01111111),即 E=e+127.
IEEE754 标准中,一个规格化的32位浮点数x的真值可表示为
x=(-1)s×(1.M)×2E-127
e=E-127
一个规格化的64位浮点数x的真值为
x=(-1)s×(1.M)×2E-1023 e=E-1023
浮点数所表示的范围远比定点数大。一台计算机中究竟采用 定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在 高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行 选择,而单片机中多采用定点表示。
[例1] 若浮点数x的754标准存储格式为
(41360000)16,求其浮点数的十进制数值。
-3=+9
(mod12)
mod12的意思就是12模数,这个“模”表示被丢掉的数值。
上式在数学上称为同余式。
上例中其所以7-3和7+9(mod12)等价,原因就是表指针超过
12时,将12自动丢掉,最后得到16-12=4。从这里可以得到一个
启示,就是负数用补码表示时,可以把减法转化为加法。这样,
在计算机中实现起来就比较方便。
为提高数据的表示精度,当尾数的值不为 0 时,尾数域的最
高有效位应为1,否则以修改
阶码同时左右移小数点的办法,使其变成这一表示形式,这称为
浮点数的规格化表示。
当浮点数的尾数为 0,不论其阶码为何值,或者当阶码的值
遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都
把该浮点数看成零值,称为机器零。
相关文档
最新文档