第1页:第一单元第六讲浮点数
第一单元第六讲浮点数
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的规格化表示、IEEE 754标准与加减乘除运算步骤。
第2页:内容提要:浮点数、科学表示法
- 浮点数
- 科学表示法
- IEEE 754浮点数标准
- 计算机内的浮点数表示
- 数制转换
- 数据类型
第3页:计算机内的数据
计算机内的数据
- 计算机的功能:处理数据
- n位能表示哪些数据?–无符号整数:0 to 2n-1
- 其它数据呢?–大整数?(如:一个世纪的秒数)3,155,760,00010(3.1557610x 109)
- 非常小的数?(如:原子的直径)0.0000000110(1.010x 10-8)
- 有理数(如:循环小数)2/3(0.666666666. . .)
- 无理数21/2(1.414213562373. . .)
- 无限不循环小数:e (2.718...),(3.141...)
第4页:科学计数法6.02 x 1023根
科学计数法6.02 x 1023根(基数)小数点
- 规格化形式:no leadings 0s(小数点前仅有1位非0数字)
- 1/1,000,000,000的不同表示形式:–规格化:1.0 x 10-9
- 非规格化:0.1 x 10-8, 10.0 x 10-10尾数阶
第5页:进制的科学计数法1.02x2-1根
二进制的科学计数法1.02x2-1根(基数)“二进制小数点”尾数阶
- 浮点数的算术运算
- 二进制小数点不是固定在某位上
- C语言中的float型数据
第6页:浮点数的计算机内部表示
浮点数的计算机内部表示
- 规格化形式:+1.xxxxxxxxxx2*2yyyy2
- 字长的整数倍(32 bits)031SExponent302322Significand1 bit8 bits23 bits
- S表示符号位Exponent表示y,即阶Significand表示x,即尾数的后部分
- 十进制表示范围:2.0 x 10-38至2.0 x 1038
第7页:上溢和下溢
上溢和下溢
- 上溢
- 数值太大(> 2.0x1038)
- 阶的值超出8位能表示的范围
- 下溢
- >0, < 2.0x10-38
- 如何减少上溢和下溢?
第8页:双精度浮点数
双精度浮点数
- 使用双字(64位)
- C语言中的double类型
- 十进制的范围扩展到2.0 x 10-308至2.0 x 10308
- 最主要的好处是精度得到了扩展(52位)031SExponent302019Significand1 bit11 bits20 bitsSignificand (cont’d)32 bits
第9页:浮点数表示规格化科学计数法
浮点数表示规格化科学计数法
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的规格化表示、IEEE 754标准与加减乘除运算步骤。
第10页:浮点数标准
10IEEE 754浮点数标准
- 被几乎所有计算机采纳(自1980年起)
- 符号位:
- 有效位:–使用原码表示
- 规格化小数中,隐含最高位1
- 单精度为:1 + 23位,双精度为1 + 52位
- 0 <有效数< 1
- 0不可能出现为1的位
- 在阶码中保留0给数01表示负数0表示正数(-1)S* (1 + Significand) * 2Exp
第11页:阶的移码表示
阶的移码表示
- 在IEEE 754中,浮点数的阶不用补码表示,采用移码表示
- 最小的阶:000000012
- 最大的阶:111111102
- 移码:在真正的阶上加一个规定的值
- 对单精度浮点数:+127
- 对双精度浮点数:+1023
- 1.0 * 2-1(-1)S* (1 + Significand) * 2(Exponent-Bias)0 0111 1110 0000 0000 0000 0000 0000 000
第12页:浮点数与浮点运算
12IEEE 754的阶
- 可以在没有浮点运算器的情况下使用浮点数
- 将浮点数分解成三个部分:符号位,阶和有效数
- 可进行快速比较
第13页:浮点数与浮点运算
- 尾数用原码表示
- 最高位为1
- 含义:–十进制:1.6732 = (1x100) + (6x10-1) + (7x10-2) + (3x10-3) + (2x10-4)
- 二进制:1.1001 = (1x20) + (1x2-1) + (0x2-2) + (0x2-3) + (1x2-4)(-1)S* (1 + Significand) * 2(Exponent-Bias)
第14页:浮点数与浮点运算
浮点数的二—十进制转换
- 符号位: 0 =>正数
- 阶:–0110 10002= 10410
- 有效数:–1+ 1x2-1+ 0x2-2+ 1x2-3+ 0x2-4+ 1x2-5+...=1+2-1+2-3+2-5+2-7+2-9+2-14+2-15+2-17+2-22= 1.0 + 0.66611500110 1000101 0101 0100 0011 0100 0010
- 十进制值: 1.666115*2-23~ 1.986*10-7
第15页:浮点数与浮点运算
浮点数十—二进制转换(1/2)
- 简单情况:如果除数是2的整数倍,则比较简单
- 如:-0.75的二进制
- 0.75 =-3/4
- 112/1002=-0.112
- 规格化为:-1.12x 2-1
- (-1)Sx (1 + Significand) x 2(Exponent-127)
- (-1)1x (1 + .100 0000 ... 0000) x 2(126-127)10111 1110100 0000 0000 0000 0000 0000
第16页:浮点数与浮点运算
浮点数十—二进制转换(2/2)
- 除数不是2的整数倍
- 该数无法精确表示
- 可能需要多位有效位来保证精度
- 难点:如何得到有效位?
- 循环小数有一个循环体
- 转换
- 求出足够多的有效位.–根据精度要求(单、双)截断多余的位。–按标准要求给出符号位、阶和有效位。
第17页:转换举例
170.33333332x 20.666666640.66666666x
- 有效位:101 0101 0101 0101 0101 0101
- 符号位:负=>1
- 阶: 1+ 127 = 12810=1000 0000211000 0000101 0101 0101 0101 0101 0101-3 . 3 3 3 3 3 3…=>-1.1010101.. x 211 1.0 1 0 1 0 1 0 . . .
第18页:特殊的浮点数值-
特殊的浮点数值-
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的规格化表示、IEEE 754标准与加减乘除运算步骤。
第19页:下列结果是什么
19Not a Number
- 下列结果是什么:sqrt(-4.0)or0/0?–如果无穷大不是错误的话,那以上也不算
- 称其为Nota Number (NaN)
- 阶= 255,有效位非0
- 应用
- NaNs可帮助排错
- 自包含:op(NaN, X) = NaN
- 千万不要用它
- 请教数学家
第20页:非规格化数
非规格化数
- 问题:在0周围还有一些空隙没有用来表示浮点数
- 最小的正数:a = 1.0…2* 2-126= 2-126
- 次小的正数:b = 1.0 … 012* 2-126= 2-126+ 2-150
- a-0 = 2-126
- b-a = 2-150
- 解决办法:–使用非规格化数:没有隐含的前导1
- 最小的正数:a = 2-150
- 次小的正数:b = 2-149ba0+-空隙!0+
第21页:浮点数与浮点运算
- 浮点数的算术运算=>舍入
- 类型转换时也需要舍入
- Doublesingle precisioninteger
- 向上舍入
- 2.001 => 3;-2.001 =>-2
- 向下舍入
- 1.999 => 1;-1.999 =>-2
- 截断
第22页:浮点运算的特点
浮点运算的特点
- 浮点加、减法不满足结合律!–x =–1.5 x 1038, y = 1.5 x 1038, and z = 1.0
- x + (y + z) =–1.5x1038+ (1.5x1038+ 1.0)=–1.5x1038+ (1.5x1038) =0.0
- (x + y) + z= (–1.5x1038+ 1.5x1038) + 1.0= (0.0) + 1.0 =1.0
- 浮点数加法、减法不可结合!
- 浮点数也不能进行相等比较!–为什么?浮点数算术运算的结果是近似值。
第23页:浮点数加、减法
浮点数加、减法
- 不能只对尾数进行运算
- 算法
- 对阶,求阶差:E= EX-EY,使阶码小的数的尾数右移E位,其阶码取大的阶码值;–对尾数进行加、减法,求得结果
- 保持阶的值
- 规格化
- 舍入,可能再次规格化
- 进行溢出检查(阶码)
第24页:加、减运算举例例1
加、减运算举例例1
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的规格化表示、IEEE 754标准与加减乘除运算步骤。
第25页:浮点数乘、除法
浮点数乘、除法
- 算法
- 阶码加、减:乘:EX+EY,除:EX-EY
- 对尾数进行乘、除法,求得结果
- 规格化
- 舍入,可能再次规格化
- 进行溢出检查(阶码)
第26页:浮点数与检错纠错码
浮点数与检错纠错码
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的表示与运算、奇偶校验码与海明码。
第27页:浮点运算部件
浮点运算部件
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的规格化表示、IEEE 754标准与加减乘除运算步骤。
第28页:浮点数与浮点运算
数据及数据类型–1.986 *10-7–878,003,010–“4UCB”AD
- 计算机中的数据可以表示任何事情:指令、操作数等,由上层次的抽象计算机来判断。
- 对存储内容的错误理解:–将ASCII码当作浮点数,指令作为数据,整数可能成为指令, ...–程序中的安全漏洞001101000101 0101 0100 0011 0100 0010
第29页:小结:计算机中的浮点数是我
- 计算机中的浮点数是我们实际使用的数的近似值
- IEEE 754浮点数标准是浮点数运算中广为接受的标准
- 浮点数运算一般由专门的浮点运算器完成
- 计算机中的二进制位只有在上下文才有意义,单独的一个字不代表任何含义。
第30页:检错纠错码为了提高计算机的可靠性
检错纠错码为了提高计算机的可靠性
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现数据编码中检错与纠错能力的获得方式与冗余度关系。
第31页:几种常用的检错纠错码我们只介绍两种常用
几种常用的检错纠错码我们只介绍两种常用
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现海明码校验位位数确定方法与一位错的发现、定位和改正。
第32页:奇偶校验码用于并行码检错原理
奇偶校验码用于并行码检错原理
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现奇偶校验位的形成与并行数据传送中的检错实现电路。
第33页:奇偶校验码的实现电路+
奇偶校验码的实现电路+
- 奇校验偶校验出错指示+++++++同左侧电路编码电路译码电路P (校验位)八位数据位D7 D6 D5 D4 D3 D2 D1 D0p
第34页:海明校验码
海明校验码
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现海明码校验位位数确定方法与一位错的发现、定位和改正。
第35页:海明码的编码方法合理地用
海明码的编码方法合理地用k位数据位形成r个校验位的值,即保证用k个数据位中不同的数据位组合来形成每个校验位的值,使任何一个数据位出错时,将影响r个校验位中不同的校验位组合起变化。换言之,通过检查是哪种校验位组合起了变化,就能确定是哪个数据位错,对该位求反则实现纠错。
有时两位错与某种情况的一位错对校验位组合的影响相同,必须加以区分与解决。
第36页:海明编码数据位
海明编码数据位
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现海明码校验位位数确定方法与一位错的发现、定位和改正。
第37页:海明校验码
海明校验码
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现海明码校验位位数确定方法与一位错的发现、定位和改正。
第38页:海明校验码
海明校验码
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现海明码校验位位数确定方法与一位错的发现、定位和改正。
第39页:检错纠错码小结1.K位码有2K个编码状态
检错纠错码小结1.K位码有2K个编码状态
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现奇偶校验位的形成与并行数据传送中的检错实现电路。
第40页:检错纠错能力4.对k位数据位
检错纠错能力4.对k位数据位
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现数据编码中检错与纠错能力的获得方式与冗余度关系。
第41页:作业:阅读:、实验:
- 阅读:–《结构化计算机组成》附录B
- 实验:–1.完成教材中表2.24和表2.25。(P114)
- 2.在TEC-2000上用汇编语言实现1+2+3+…+10
- 3.用机器语言实现上述任务。
- 书面作业:教材P131 2.19 2.26
第42页:节日快乐!
节日快乐!
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现浮点数的表示与运算、奇偶校验码与海明码。