当前位置:文档之家› Lecture 3 运算器-浮点数的表示

Lecture 3 运算器-浮点数的表示




②-5转换成二进制值为:-101
在IEEE754中规格化表示为1.01×22, e=127+2=129, IEEE754编码为:1 10000001 01000000000000000000000
IEEE754标准浮点数表示
例 将十进制数9和5/32转换为IEEE754标准的单精度数, 并用8位十六进 制表示
阶码采用移码不影 响表示范围,但机 器数与补码表示时 不同
最小正数:2-1×2b
最大负数:-(2-(n-1)+2-1)×2b (绝对值最小的负数) 最小负数:-1×2a (绝对值最大的负数)
浮点数的阶码决定了浮点数的表示范围;浮点数的尾数决 定了浮点数的表示精度。
练习
设机器数字长为 24 位,欲表示±3万的十进制数, 试问在保证数的最大精度的前提下,除阶符、数符各 取1 位外,阶码、尾数各取几位?

解答(1)
9= (-1)0×1001=(-1)0×23 ×1.001 =(-1)0×2130-127 ×1.001
二进制代码为:
0 10000010
00100000000000000000000
即:41100000H

解答(2)
5/32= (-1)0×0101×2-5
=(-1)0×2-5×22×1.01
解: ∵
214 = 16384
215 = 32768
∴ 15 位二进制数可反映 ±3 万之间的十进制数 215 × 0.××× … ××× k = 4, 5, 6, …
满足 最大精度 可取 k = 4,n = 18
?位
主要内容



浮点数的表示格式 规格化 IEEE754
“Father” of the IEEE 754 standard
IEEE754标准浮点数表示

例 写出下列十进制数据的IEEE754编码 ① 0.15625 ②-5
解:① 0.15625转换成二进制值为0.00101,

在IEEE754中规格化表示为1.01×2-3, e=127-3=124,
IEEE754编码为:0 01111100 01000000000000000000000
浮点数的表示范围:-231×1 ~ 231× ) 2
9
25 1
表示范围
根据以上分析若某机字长为k+n,其中阶码k位(含一位符号位),
尾数n位(含一位符号位);
设 a=2(k-1)-1 b=-2(k-1) (阶码的最大值) (阶码的最小值)
则规格化数所能表示的范围为: 最大正数:(1-2-(n-1))×2a

双精度格式: 64位,符号位1位, E=11位, M=52位
1 E 11 M 尾数 52
S符号位
阶码
64位双精度形式
IEEE754标准浮点数表示

阶码用移码、尾数用原码,因为规格化原码尾数的最高为恒为1,为增加一 位的精度,该1在尾数中不表示出来,计算时在尾数前面自动加1. 1 8 23 E 1.M ( 原 码 规 格 化 ) 尾数 32位单精度形式
/~wkahan/ ieee754status/754story.html
Prof. William Kahan
IEEE754标准浮点数表示

单精度格式: 32位, 符号位1位,阶码 E=8位, 尾数 M=23位
1 E 8 M 尾数 23
S符号位
阶码 32位单精度形式

M1 M0
尾数的数值部分
Ms n k Es 和 k
代表浮点数的符号 其位数反映浮点数的精度 其位数反映浮点数的表示范围 共同表示小数点的实际位置
例 将 –58 表示成二进制定点数和浮点数,并写出它 在16位定点机中的三种机器数和浮点机中阶码为移码、 尾数为补码的形式(尾数10位,尾符1位,阶码含阶符 5位)。 x = – 111010 解: 二进制形式 定点表示 x = – 0000 111010
浮点数的溢出
作业3
3-1. 将下列十进制数表示成浮点规格化数,阶码4位(含符 号),分别用补码和移码表示;尾数6位(含符号),用 补码表示。 (1)19/512 (2) -19/512 3-2. 浮点数阶码4位(含阶符),尾数9位(含数符),均用补码表 示,求规格化和非规格化时数值范围。 3-3.设浮点数的格式为:第15位为符号位,第14位到第8位为 阶码,采用补码表示;第7位到第0位为尾数,与符号位一 起采用规格化的补码表示,基数为2。问:它能表示的正 数和负数的数值范围是什么?
问题



写出+0.125, -0.125的补码和移码表示。为什么用补码,移 码? 如何表示即有整数又有小数的数值数据,如12.25? 12.25用浮点数怎么表示? 为什么要对浮点数进行规格化?
引入

定点表示法的特点 定点数表示数的范围受字长限制,表示数的范围有 限; 定点表示的精度有限; 机器中,常用定点数表示纯整数和纯小数,表示即 有整数又有小数时比较麻烦。
主要内容



浮点数的表示格式 规格化 IEEE754
规格化
同一个浮点数表示不唯一,如:
1.11 × 20, 0.111 × 21
|x|>=0.5
①原码规格化后的尾数 正数为 0.1×…×的形式
负数为 1.1×…×的形式
②补码规格化后的尾数 正数为 0.1×…×的形式 负数为 1.0×…×的形式
最大正数 011111 5 2 -1=31
表示范围
最小正数 0 0.100000000 -1 2 最大正数 0.111111111 -9 1-2
② 规格化尾数表示范围如下: 最小负数 最大负数
二进制补码 1.000000000 1.011111111 -9 -1 十进制真值 -1 -(2 +2 )

将下列十进制数表示成浮点规格化数,阶码 4 位 ( 含符
号),分别用补码和移码表示;尾数 6位(含符号),用补码 表示(要求规格化)。 ① 19/512 ② -19/512
解: ① 19/512=10011×2-9=0.10011×2-4 阶码用补码表示为: 1100 010011
阶码用移码表示为: 0100 010011 ② -19/512=-10011×2-9=-0.10011×2-4 阶码用补码表示为: 1100 101101
阶码用移码表示为: 0100 101101
表示范围
例 设浮点数的的阶码6位(含符号位),尾数为10位(含符 号位),阶码和尾数都用补码表示,求其表示范围(规 格化)。
【例题分析】 ① 阶码范围: 最小负数 二进制补码100000 5 十进制真值 -2 =-32
最大负数 0 111111 -1
最小正数 000001 +1
00000001
00..00
-1 ×2-126
小结



理解规格化的意义、IEEE754表示中隐含隐含尾数最高拉 的意义; 给定一个真值,能用规格化浮点数表示该值(含IEEE754表 示); 给定一个浮点数表示的机器数(含IEEE754表示),能计算 其真值。
浮点数精度问题

1994年11月间各报纸有关Pentium处理器浮点瑕疵问题的 报告。Pentium芯片中浮点除法存在的问题甚至上了电视 节目David Leeterman Late Show的十大新闻排行榜。为 了换回所有问题芯片,Intel一共为此损失了3亿美元的资 金。
直到80年代初,各个机器内部的浮点数表示格式还没有统一 因而相互不兼容,机器之间传送数据时,带来麻烦 1970年代后期, IEEE成立委员会着手制定浮点数标准 1985年完成浮点数标准IEEE754的制定 现在所有计算机都采用IEEE754来表示浮点数 This standard was primarily the work of one person, UC Berkeley math professor William Kahan.
S符号位
阶码
即,如果要表示一个数,需要把该数写成: (-1)s × 1.M × 2(x)真值 而规格化浮点数形式是: (-1)s × 0.1M ×2(128+x)移码 = (-1)s × 1.M × 2(127+x)移码
e=127+x
相当于此时移码 的计算不是加 128,而是加 127
单精度数所表示的数值为 (-1)s × 1.M × 2e-127。 双精度数所表示的数值为 (-1)s × 1.M × 2e-1023。 其中: s=0表示正数,s=1表示负数;
浮点数在计算机中的表示格式如下:
MS E 数符 阶码 定点整数移码表示

M 尾数值 定点小数补码表示
ES E MS M 阶符 阶码 数符 尾数值 定点整数补码表示 定点小数补码表示
浮点数的表示格式
E 阶码 Es Ek-1 … E1E0 Ms Mn-1
阶 符 阶码的 数值部分 数 符 小数点位置
M 尾数
IEEE754的表示范围(单精度)
最大正数 最小正数
数符 阶码 0 11111110 0 00000001 尾数 11…11 00…00 真值 (2-2-23) ×2127 1 ×2-126
绝对值最大 1 的负数(最 小负数) 绝对值最小 1 的负数(最 大负数)
11111110
11..11
-(2-2-23) ×2127

解答(1)
1 10000001 01000000000000000000000 (-1)1×(1.25)×2129-127=-1×1.25×22 =-1.25×4=-5.0

解答(2) 3F880000H
0 01111111 00010000000000000000000 (-1)0×(1.0625)×2127-127=1×1.0625×20 =1.0625×1=1.0625
相关主题