Lecture 3 运算器-浮点数的表示
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要内容
浮点数的表示格式 规格化 IEEE754
规格化
同一个浮点数表示不唯一,如:
1.11 × 20, 0.111 × 21
|x|>=0.5
①原码规格化后的尾数 正数为 0.1×…×的形式
负数为 1.1×…×的形式
②补码规格化后的尾数 正数为 0.1×…×的形式 负数为 1.0×…×的形式
浮点数在计算机中的表示格式如下:
MS E 数符 阶码 定点整数移码表示
或
M 尾数值 定点小数补码表示
ES E MS M 阶符 阶码 数符 尾数值 定点整数补码表示 定点小数补码表示
浮点数的表示格式
E 阶码 Es Ek-1 … E1E0 Ms Mn-1
阶 符 阶码的 数值部分 数 符 小数点位置
M 尾数
问题
写出+0.125, -0.125的补码和移码表示。为什么用补码,移 码? 如何表示即有整数又有小数的数值数据,如12.25? 12.25用浮点数怎么表示? 为什么要对浮点数进行规格化?
引入
定点表示法的特点 定点数表示数的范围受字长限制,表示数的范围有 限; 定点表示的精度有限; 机器中,常用定点数表示纯整数和纯小数,表示即 有整数又有小数时比较麻烦。
浮点形式 定点机中
x = – (0.1110100000) × 2110 浮点机中
[x]原 = 1, 0000000 00111010 [阶]原 = 0, 0110 [阶]补= 0, 0110 存放在存 [x]补 = 1, 1111111 11000110 [阶]移= 1, 0110 [x]反 = 1, 1111111 11000101 [尾]原 = 1.1110100000 储器中形 式为 [尾]补 = 1.0001100000 B460H [x]阶移、尾补 = 1, 0110; 1. 0001100000
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表示负数;
…
M1 M0
尾数的数值部分
Ms n k Es 和 k
代表浮点数的符号 其位数反映浮点数的精度 其位数反映浮点数的表示范围 共同表示小数点的实际位置
例 将 –58 表示成二进制定点数和浮点数,并写出它 在16位定点机中的三种机器数和浮点机中阶码为移码、 尾数为补码的形式(尾数10位,尾符1位,阶码含阶符 5位)。 x = – 111010 解: 二进制形式 定点表示 x = – 0000 111010
②-5转换成二进制值为:-101
在IEEE754中规格化表示为1.01×22, e=127+2=129, IEEE754编码为:1 10000001 01000000000000000000000
IEEE754标准浮点数表示
例 将十进制数9和5/32转换为IEEE754标准的单精度数, 并用8位十六进 制表示
=(-1)0×2124-127 ×1.01
二进制代码为: 0 01111100 01000000000000000000000 即:3E200000H
IEEE754标准浮点数表示
例
将IEEE754单精度数(8位十六进制表示)转换为十进制数
(1) C0A00000H
C0A00000H
(2)3F880000H
www.cs.berkeley.edu/~wkahan/ ieee754status/754story.html
Prof. William Kahan
IEEE754标准浮点数表示
单精度格式: 32位, 符号位1位,阶码 E=8位, 尾数 M=23位
1 E 8 M 尾数 23
S符号位
阶码 32位单精度形式
直到80年代初,各个机器内部的浮点数表示格式还没有统一 因而相互不兼容,机器之间传送数据时,带来麻烦 1970年代后期, IEEE成立委员会着手制定浮点数标准 1985年完成浮点数标准IEEE754的制定 现在所有计算机都采用IEEE754来表示浮点数 This standard was primarily the work of one person, UC Berkeley math professor William Kahan.
解答(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
注意:这里规格化尾数的最大负数的补码是1.01…1的形式,而 不是1.11…1的形式,是因为 1.11…1不是规格化数,
所以规格化尾数的最大负数应是 :-0.10…01 ,(- 0.10…1)补 =1.01…1 即: -(2-(n-1)+2-1 )
表示范围
③规格化浮点数表示范围如下: 最小负数 最大负数 0 二进制补码 2011111×1.0…0 2100000×1.01…1 2100000×0.10…0 阶码用移码 2111111×1.0…0 2000000×1.01…1 2000000×0.10…0 - - - - - 十进制真值 -231×1 -2 32×(2 9+2 1 ) 2 32×2 1 2011111×0.1…1 2111111×0.1…1 - 231×(1-2 9) 最小正数 最大正数
阶码用移码表示为: 0100 101101
表示范围
例 设浮点数的的阶码6位(含符号位),尾数为10位(含符 号位),阶码和尾数都用补码表示,求其表示范围(规 格化)。
【例题分析】 ① 阶码范围: 最小负数 二进制补码100000 5 十进制真值 -2 =-32
最大负数 0 111111 -1
最小正数 000001 +1
双精度格式: 64位,符号位1位, E=11位, M=52位
1 E 11 M 尾数 52
S符号位
阶码
64位双精度形式
IEEE754标准浮点数表示
阶码用移码、尾数用原码,因为规格化原码尾数的最高为恒为1,为增加一 位的精度,该1在尾数中不表示出来,计算时在尾数前面自动加1. 1 8 23 E 1.M ( 原 码 规 格 化 ) 尾数 32位单精度形式
解答(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
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
Lecture 3 浮点数表示
课程结构
计算机系 统统计 硬件 软硬件接 口 软件
运算器
百度文库
存储器
控制器
总线
输入输出
数据表示 非数值数 据 浮点
运算方法
运算器
数据数据
校验码
定点
原码
一般表示
反码
规格化
补码
IEEE754
移码
主要内容
浮点数的表示格式 规格化 IEEE754
浮点数的表示格式
对任意一个二进制数N,总可以写成: N= 2E×M ,式中: E为数N的阶码,M为数N的尾数; 可见浮点数是由阶码和尾数两个部分组成的。
解: ∵
214 = 16384
215 = 32768
∴ 15 位二进制数可反映 ±3 万之间的十进制数 215 × 0.××× … ××× k = 4, 5, 6, …
满足 最大精度 可取 k = 4,n = 18
?位
主要内容
浮点数的表示格式 规格化 IEEE754
“Father” of the IEEE 754 standard
浮点数的表示范围:-231×1 ~ 231×(1-2-9)
1 2
25 1
~ (1 2 ) 2
9
25 1
表示范围
根据以上分析若某机字长为k+n,其中阶码k位(含一位符号位),
尾数n位(含一位符号位);
设 a=2(k-1)-1 b=-2(k-1) (阶码的最大值) (阶码的最小值)
则规格化数所能表示的范围为: 最大正数:(1-2-(n-1))×2a
IEEE754标准浮点数表示
例 写出下列十进制数据的IEEE754编码 ① 0.15625 ②-5
解:① 0.15625转换成二进制值为0.00101,
在IEEE754中规格化表示为1.01×2-3, e=127-3=124,
IEEE754编码为:0 01111100 01000000000000000000000
最大正数 011111 5 2 -1=31
表示范围
最小正数 0 0.100000000 -1 2 最大正数 0.111111111 -9 1-2
② 规格化尾数表示范围如下: 最小负数 最大负数
二进制补码 1.000000000 1.011111111 -9 -1 十进制真值 -1 -(2 +2 )
00000001
00..00
-1 ×2-126
小结
理解规格化的意义、IEEE754表示中隐含隐含尾数最高拉 的意义; 给定一个真值,能用规格化浮点数表示该值(含IEEE754表 示); 给定一个浮点数表示的机器数(含IEEE754表示),能计算 其真值。
浮点数精度问题
1994年11月间各报纸有关Pentium处理器浮点瑕疵问题的 报告。Pentium芯片中浮点除法存在的问题甚至上了电视 节目David Leeterman Late Show的十大新闻排行榜。为 了换回所有问题芯片,Intel一共为此损失了3亿美元的资 金。
例
将下列十进制数表示成浮点规格化数,阶码 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
阶码采用移码不影 响表示范围,但机 器数与补码表示时 不同
最小正数:2-1×2b
最大负数:-(2-(n-1)+2-1)×2b (绝对值最小的负数) 最小负数:-1×2a (绝对值最大的负数)
浮点数的阶码决定了浮点数的表示范围;浮点数的尾数决 定了浮点数的表示精度。
练习
设机器数字长为 24 位,欲表示±3万的十进制数, 试问在保证数的最大精度的前提下,除阶符、数符各 取1 位外,阶码、尾数各取几位?
IEEE754标准浮点数表示
几个特殊数值:
当E的二进制位全为1时为特殊数值:此时,
若M的二进制位全为0,则n表示无穷大。若S为1则为负 无穷大,若S为0则为正无穷大; 若M的二进制位不全为0时,表示NaN(Not a Number), 表示这不是一个合法实数。
E为全0时:M全为0时,表示机器0;M不全为0时, 表示非规格化的数。 单精度数e的取值为1~254(8位表示),M为23位, 共32位;双精度数e的取值为1~2046(11位表示), M为52位,共64位。
浮点数的溢出
作业3
3-1. 将下列十进制数表示成浮点规格化数,阶码4位(含符 号),分别用补码和移码表示;尾数6位(含符号),用 补码表示。 (1)19/512 (2) -19/512 3-2. 浮点数阶码4位(含阶符),尾数9位(含数符),均用补码表 示,求规格化和非规格化时数值范围。 3-3.设浮点数的格式为:第15位为符号位,第14位到第8位为 阶码,采用补码表示;第7位到第0位为尾数,与符号位一 起采用规格化的补码表示,基数为2。问:它能表示的正 数和负数的数值范围是什么?