第六讲浮点数和浮点运算器检错纠错码

上传人:仙*** 文档编号:33298761 上传时间:2021-10-16 格式:PPT 页数:42 大小:275.50KB
收藏 版权申诉 举报 下载
第六讲浮点数和浮点运算器检错纠错码_第1页
第1页 / 共42页
第六讲浮点数和浮点运算器检错纠错码_第2页
第2页 / 共42页
第六讲浮点数和浮点运算器检错纠错码_第3页
第3页 / 共42页
资源描述:

《第六讲浮点数和浮点运算器检错纠错码》由会员分享,可在线阅读,更多相关《第六讲浮点数和浮点运算器检错纠错码(42页珍藏版)》请在装配图网上搜索。

1、1第一单元 第六讲浮点数和浮点运算器检错、纠错码2内容提要 浮点数 科学表示法 十进制科学表示法 二进制科学表示法 IEEE 754 浮点数标准 计算机内的浮点数表示 表示范围 vs. 表示精度 数制转换 数据类型3计算机内的数据 计算机的功能:处理数据 n 位能表示哪些数据 ? 无符号整数:0 to 2n - 1 有符号整数: -2(n-1) to 2(n-1) - 1 其它数据呢 ? 大整数? (如:一个世纪的秒数)3,155,760,00010 (3.1557610 x 109) 非常小的数? (如:原子的直径)0.0000000110 (1.010 x 10-8) 有理数(如:循环小数

2、) 2/3 (0.666666666. . .) 无理数21/2 (1.414213562373. . .) 无限不循环小数:e (2.718.), (3.141.)4科学计数法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.02 x 2-1根(基数)根(基数)“二进制小数点二进制小数点”尾数尾数阶阶浮点数的算术运算二进制小数点不是固定在某位上

3、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.0 x1038) 阶的值超出8位能表示的范围 下溢 数值太小 0, 2.0 x10-38 阶码超出了8位二进制位能表示的范围 如何减少上溢和下溢?8双精度浮点

4、数 使用双字 (64 位) C 语言中的 double 类型 十进制的范围扩展到2.0 x 10-308 至 2.0 x 10308 最主要的好处是精度得到了扩展 (52 位)031SExponent3020 19Significand1 bit11 bits20 bitsSignificand (contd)32 bits9浮点数表示规格化科学计数法: +1.xxxx2*2yyyy2Significand (contd)0SExponent20 19Significand1 bit11 bits20 bits32 bits31 30双精度双精度阶: 移码表示有效数: 符号 尾数表示移码 12

5、7 (单精度)1023 (双精度)031SExponent3023 22Significand1 bit8 bits23 bits单精度单精度10IEEE 754 浮点数标准 被几乎所有计算机采纳 (自1980年起) 符号位: 有效位: 使用原码表示 规格化小数中,隐含最高位1 单精度为:1 + 23 位,双精度为 1 + 52 位 0 有效数 正数 阶: 0110 10002 = 10410 移码校正: 104 - 127 = -23 有效数: 1 + 1x2-1+ 0 x2-2 + 1x2-3 + 0 x2-4 + 1x2-5 +.=1+2-1+2-3 +2-5 +2-7 +2-9 +2-

6、14 +2-15 +2-17 +2-22= 1.0 + 0.66611500110 1000 101 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.12 x 2-1 (-1)S x (1 + Significand) x 2(Exponent-127) (-1)1 x (1 + .100 0000 . 0000) x 2(126-127)101

7、11 1110 100 0000 0000 0000 0000 000016浮点数十二进制转换(2/2) 除数不是2的整数倍 该数无法精确表示 可能需要多位有效位来保证精度 难点:如何得到有效位? 循环小数有一个循环体 转换 求出足够多的有效位. 根据精度要求(单、双)截断多余的位。 按标准要求给出符号位、阶和有效位。170.33333332x 20 .666666640.66666666x 21 .333333320.33333333x 20 .66666666转换举例 有效位: 101 0101 0101 0101 0101 0101 符号位: 负 = 1 阶: 1+ 127 = 1281

8、0 = 1000 000021 1000 0000 101 0101 0101 0101 0101 0101- 3 . 3 3 3 3 3 3= - 1.1010101. x 21 1 1 . 0 1 0 1 0 1 0 . . .-18特殊的浮点数值-(1-2-24)*2128(1-2-24)*2128-.5*2-127.5*2-127正溢出正溢出负溢出负溢出可表示的正数可表示的正数可表示的负数可表示的负数正下溢正下溢负下溢负下溢001111 1111+/- 非01111 1111NaN非00000 0000非规格化数00000 0000+/- 0有效数有效数阶阶特殊值特殊值19Not a

9、Number 下列结果是什么: sqrt(-4.0)or 0/0? 如果无穷大不是错误的话,那以上也不算 称其为 Not a Number (NaN) 阶 = 255, 有效位非0 应用 NaNs 可帮助排错 自包含: op(NaN, X) = NaN 千万不要用它 请教数学家20非规格化数 问题:在0周围还有一些空隙没有用来表示浮点数 最小的正数: a = 1.0 2 * 2-126 = 2-126 次小的正数: b = 1.0 01 2 * 2-126 = 2-126 + 2-150 a - 0 = 2-126 b - a = 2-150 解决办法: 使用非规格化数:没有隐含的前导1 最小

10、的正数: a = 2-150 次小的正数: b = 2-149ba0+-空隙空隙!0+-21舍入 浮点数的算术运算 = 舍入 类型转换时也需要舍入 Double single precision integer 向上舍入 2.001 = 3; -2.001 = -2 向下舍入 1.999 = 1; -1.999 = -2 截断 丢弃最后的位(向0舍入)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 + (

11、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.011023+1.1000 22对阶:1.011023+0.1100 23 加法:10.0010

12、23规格化:1.000124例2:1.000123 - 1.1110 21对阶:1.000123 - 0.01111 23 减法:0.1001123规格化:1.0011221.00102225浮点数乘、除法 算法算法 阶码加、减:乘:EX+EY ,除:EX- EY 对尾数进行乘、除法,求得结果 规格化 舍入,可能再次规格化 进行溢出检查(阶码)2664位总线接口指令缓存(8 KB)指令分支预测预取缓冲器整型寄存器组数据缓存(8 KB)浮点算逻部件浮点寄存器组整型ALU整型ALU乘法器加法器除法器32位64位32位32位U流水线V流水线32位32位256位64位 Pentium结构简图27浮点运

13、算部件28数据及数据类型1.986 *10-7878,003,010“4UCB” ADD R0, R1计算机中的数据可以表示任何事情:指令、操作数等,由上层次的抽象计算机来判断。 对存储内容的错误理解:将ASCII码当作浮点数,指令作为数据,整数可能成为指令, .程序中的安全漏洞0011 0100 0101 0101 0100 0011 0100 001029小结 计算机中的浮点数是我们实际使用的数的近似值 IEEE 754 浮点数标准是浮点数运算中广为接受的标准 浮点数运算一般由专门的浮点运算器完成 阶码运算 尾数运算 计算机中的二进制位只有在上下文才有意义,单独的一个字不代表任何含义。30

14、检错纠错码检错纠错码 为了提高计算机的为了提高计算机的可靠性可靠性,除了采,除了采取选用更高可靠性的器件,更好的生产取选用更高可靠性的器件,更好的生产工艺等措施之外,还可以从数据编码上工艺等措施之外,还可以从数据编码上想一些办法,即采用一点冗余的线路,想一些办法,即采用一点冗余的线路,在原有数据位之外再在原有数据位之外再增加一到几位校验增加一到几位校验位位,使新得到的码字带上某种特性使新得到的码字带上某种特性,之,之后则通过后则通过检查该码字是否仍保持有这一检查该码字是否仍保持有这一特性特性,来,来发现发现是否出现了错误,甚至于是否出现了错误,甚至于定位错误后,定位错误后,自动改正自动改正这一

15、错误,这就这一错误,这就是我们这里说的是我们这里说的检错纠错编码技术检错纠错编码技术。31几种常用的检错纠错码几种常用的检错纠错码我们只介绍两种常用的检错纠错码:我们只介绍两种常用的检错纠错码:奇偶检错码奇偶检错码, 用于用于并行并行数据传送中数据传送中海明检错与纠错码海明检错与纠错码,用于,用于并行并行数据传送中数据传送中循环冗余码,循环冗余码, 用于用于串行串行数据传送中数据传送中编码过程编码过程译码过程译码过程传送传送原始数据原始数据码码 字字结果数据结果数据形成校验位的值,形成校验位的值,加进特征加进特征检查接送的码字,检查接送的码字,发现发现 / 改正错误改正错误32奇偶校验码奇偶校

16、验码用于并行码用于并行码检错检错原理:在原理:在 k 位数据码之外增加位数据码之外增加 1 位校验位,位校验位,使使 K+1 位码字中取值为位码字中取值为 1 的位数的位数总保持总保持为为 偶数偶数(偶校验偶校验)或)或 奇数奇数(奇校验奇校验)。)。例如:例如:0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 原有数字位原有数字位 两个新的码字两个新的码字 偶校验偶校验奇校验奇校验校验位校验位33奇偶校验码的实现电路+ 奇校验奇校验 偶校验偶校验 出错指示出错指示+同左侧电同左侧电路路编码电路编码电路译码电路译码电路P (校验位校

17、验位)八位数据位八位数据位D7 D6 D5 D4 D3 D2 D1 D0p34海明校验码海明校验码用于多位并行数据用于多位并行数据检错纠错检错纠错处理处理实现:为实现:为 k 个数据位设立个数据位设立 r 个校验位,个校验位,使使 k+r 位的码字同时具有这样两个特性:位的码字同时具有这样两个特性:1. 能发现并改正能发现并改正 k+r 位中任何一位出错,位中任何一位出错,2. 能能 发发 现现 k+r 位中任何二位同时出错,位中任何二位同时出错, 但已无法改正。但已无法改正。35海明码的编码方法海明码的编码方法合理地用合理地用 k 位数据位形成位数据位形成 r 个校验位的值,个校验位的值,即

18、保证用即保证用 k 个数据位中不同的数据位组合个数据位中不同的数据位组合来形成每个校验位的值,使任何一个数据来形成每个校验位的值,使任何一个数据位出错时,将影响位出错时,将影响 r 个校验位中不同的校个校验位中不同的校验位组合起变化。换言之,通过检查是哪验位组合起变化。换言之,通过检查是哪种校验位组合起了变化,就能确定是哪个种校验位组合起了变化,就能确定是哪个数据位错,对该位求反则实现纠错。数据位错,对该位求反则实现纠错。有时两位错与某种情况的一位错对校验位组有时两位错与某种情况的一位错对校验位组合的影响相同,必须加以区分与解决。合的影响相同,必须加以区分与解决。36海明编码数据位与校验位关系

19、1. 数据位有k位,校验位有r位,如要求可发现并改正一位错,则:2r个不同的编码中,至少 有1个编码来表示没有错误; 有k+r个编码来表示其中哪一为出错。即: 2r k+r+12. 如果还需要发现两位错,则 2r-1 k+r 37P1 = D2 + D1P2 = D3 + D1P3 = D3 + D2海明码的实现方案海明码的实现方案 例如:例如: k =3, r =4D3 D2 D1 P4 P3 P2 P1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 P4 = P3 + P2 + P1 + D3 + D2 + D1S1 = P

20、1 + D2 + D1S2 = P2 + D3 + D1S3 = P3 + D3 + D2S4 = P4 + P3 + P2 + P1 + D3 + D2 + D1+ :异或:异或编码方案编码方案译码方案译码方案38P1 = D2 + D1P2 = D3 + D1P3 = D3 + D2海明码的实现原理海明码的实现原理 例如:例如: k =3, r =4D3 D2 D1 P4 P3 P2 P1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 P4 = P3 + P2 + P1 + D3 + D2 + D1S1 = P1 + D2

21、+ D1S2 = P2 + D3 + D1S3 = P3 + D3 + D2S4 = P4 + P3 + P2 + P1 + D3 + D2 + D139检错纠错码小结检错纠错码小结1. K位码有位码有2K 个编码状态,全用于表示合个编码状态,全用于表示合法码法码,则任何一位出错则任何一位出错, 均会变成另一个均会变成另一个合法码合法码,不具有检错能力不具有检错能力2. 从一个合法码变成另一个合法码从一个合法码变成另一个合法码,只少只少要改变几位码的值要改变几位码的值,称为称为最小码距最小码距(码距码距)3. K+1 位码位码,只用其只用其 2K 个状态,可使码距个状态,可使码距 为为 2 ,

22、 如果一个合法码中的一位错了,如果一个合法码中的一位错了, 就成为就成为非法码非法码,通过检查,通过检查码字的合法性码字的合法性,就就得到检错能力得到检错能力,这就是奇偶校验码。,这就是奇偶校验码。40检错纠错能力检错纠错能力4. 对对 k 位数据位,当给出位数据位,当给出 r 位校验位时,位校验位时,要发现并改正一位错,要发现并改正一位错, 须须 满满 足足 如如 下下 关关 系:系: 2r = k + r +1 ,要发现并改正一位错,要发现并改正一位错, 也能发现两位错也能发现两位错,则应则应: 2r-1 = k + r , 此时码距为此时码距为 4。 5. 若最小码距为若最小码距为 d (d=2), 能发现能发现 d-1 位错位错,或或 改正改正 (d-2)/2 (取整取整) 位错位错,要发现要发现 l 位错位错,并改正并改正 t 位错位错,应满足如下条件应满足如下条件: d = l + t + 1 ( l = t )41作业 阅读: 结构化计算机组成附录B 实验: 1.完成教材中表2.24和表2.25。(P114) 2.在TEC-2000上用汇编语言实现1+2+3+10 3.用机器语言实现上述任务。 书面作业:教材 P131 2.19 2.26 所有书面作业请于10月8日交到9区40742节日快乐!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!