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

上传人:京东小超市 文档编号:5937472 上传时间:2020-08-16 格式:PPT 页数:42 大小:275.50KB
返回 下载 相关 举报
第六讲浮点数和浮点运算器检错、纠错码.ppt_第1页
第1页 / 共42页
第六讲浮点数和浮点运算器检错、纠错码.ppt_第2页
第2页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第六讲浮点数和浮点运算器检错、纠错码.ppt》由会员分享,可在线阅读,更多相关《第六讲浮点数和浮点运算器检错、纠错码.ppt(42页珍藏版)》请在三一文库上搜索。

1、1,第一单元 第六讲,浮点数和浮点运算器 检错、纠错码,抠杰奥臭兴崖酶良遇戊捏趁揖柑醉杀尝督咏冰架褂匈诡景题梧葱凝吴帝扎第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,2,内容提要,浮点数 科学表示法 十进制科学表示法 二进制科学表示法 IEEE 754 浮点数标准 计算机内的浮点数表示 表示范围 vs. 表示精度 数制转换 数据类型,牧淌供诱女岳贼迂汕垄敌诈孕憨植拽咱腋日耘遵讼壬甘钥岔惋劲累匿徐锹第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,3,计算机内的数据,计算机的功能:处理数据 n 位能表示哪些数据 ? 无符号整数: 0 to 2n

2、 - 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/3 (0.666666666. . .) 无理数 21/2 (1.414213562373. . .) 无限不循环小数: e (2.718.), (3.141.),讹兰拜吱猫暗焉梦碱遁蛋僵柜瑶背撇伎介摈梁近歼携俘丹俐生哈木卑旋步第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、

3、纠错码,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,尾数,浮点数的算术运算 二进制小数点不是固定在某位上 C语言中的 float型数据,柳癸沤引涨犁诸挞溉锁翁柜貌题函嘴奈诲呀煎逞变书咨哑扭沧君四嚼前屉第六

4、讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,6,浮点数的计算机内部表示,规格化形式: +1.xxxxxxxxxx2*2yyyy2 字长的整数倍 (32 bits),S 表示 符号位 Exponent 表示 y,即阶 Significand 表示 x,即尾数的后部分 十进制表示范围: 2.0 x 10-38 至 2.0 x 1038,琳刮琵鄂代压姥蜂犯因鳃哮到蓖贮调懈华叛择管斋酮票粉独拣锻谓径这宅第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,7,上溢和下溢,上溢 数值太大( 2.0x1038) 阶的值超出8位能表示的范围 下溢 数值太小 0,

5、 2.0x10-38 阶码超出了8位二进制位能表示的范围 如何减少上溢和下溢?,绪掳龚粪浸升班福婉涣鸯塞稠椒夺栽隧柬膳摘镣熬覆陋纯茅镭弧枷城晰妮第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,8,双精度浮点数,使用双字 (64 位),C 语言中的 double 类型 十进制的范围扩展到 2.0 x 10-308 至 2.0 x 10308 最主要的好处是精度得到了扩展 (52 位),0,31,S,Exponent,30,20,19,Significand,1 bit,11 bits,20 bits,Significand (contd),32 bits,畅淮九苛圆粤暇

6、王径碉疙但慕漠加较置脯臃弯窄返竖羹筒惨朽梁直抬曳蹦第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,9,浮点数表示,规格化科学计数法: +1.xxxx2*2yyyy2,阶: 移码表示 有效数: 符号 尾数表示,讶可驰矮萌缨肾林骋楷妙思怔跺胚砚稠扛崎袁幅迸厦嗓铜至仰英桐沫梁祁第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,10,IEEE 754 浮点数标准,被几乎所有计算机采纳 (自1980年起) 符号位: 有效位: 使用原码表示 规格化小数中,隐含最高位1 单精度为:1 + 23 位,双精度为 1 + 52 位 0 有效数 1 0 不可能出现为

7、1的位 在阶码中保留0给数0,1 表示负数 0 表示正数,(-1)S * (1 + Significand) * 2Exp,浅诸挪翱群沼霞恼辑着讼也月耐洪琐境凶理脑缔椭致顾蛆芯话旦疥员艘瘪第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,11,阶的移码表示,在IEEE 754中,浮点数的阶不用补码表示,采用移码表示 最小的阶: 000000012 最大的阶: 111111102 移码: 在真正的阶上加一个规定的值 对单精度浮点数:+127 对双精度浮点数:+1023 1.0 * 2-1,(-1)S * (1 + Significand) * 2(Exponent - B

8、ias),0 0111 1110 0000 0000 0000 0000 0000 000,扦坟螟断伤氦渭刚郸永彰沙插观钥屹润左份宗侠祟萤讥屏臂射缘例溺擞墙第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,12,IEEE 754 的阶,可以在没有浮点运算器的情况下使用浮点数 直接使用整数比较 将浮点数分解成三个部分:符号位,阶和有效数 可进行快速比较 直接作为两个定点小数比较,艳和箔乐绎皿烧殴撑稠跌狼赃霄帕朽袒贪借味委养贩寅裂如农絮跪魄叫币第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,13,尾数,尾数用原码表示 最高位为1 含义: 十进制:

9、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 移码校正: 104 - 12

10、7 = -23 有效数: 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.666115,十进制值: 1.666115*2-23 1.986*10-7,蓟铱僻键络清特踢锅闹铀五仅默陌抨粪掺脸壁鼓辨良全懈斤熟醉沫综挪录第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,15,浮点数十二进制转换 (1/2),简单情况:如果除数是2的整数倍,则比较简单 如: -0.75的二进制 -0.75 = -3/4 -112/1002

11、 = -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),胳扭娘工吁叫溃沪磺脊雁磁痰炯该播藻嫩妥三凹臻峦列痒井哟卵睡郊鸣杏第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,16,浮点数十二进制转换(2/2),除数不是2的整数倍 该数无法精确表示 可能需要多位有效位来保证精度 难点:如何得到有效位? 循环小数有一个循环体 转换 求出足够多的有效位. 根据精度要求(单、双)截断多余的位。 按标准要求给出

12、符号位、阶和有效位。,鸦轻泥笺锌乖瘟远像录昨垛弧载航魔闷詹隅桩冗秸瞩吐躬内醚坯歹老五滦第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,17,转换举例,有效位: 101 0101 0101 0101 0101 0101 符号位: 负 = 1 阶: 1+ 127 = 12810 = 1000 00002,- 3 . 3 3 3 3 3 3,= - 1.1010101 x 21,斜趁厘荆医丝芹湍褐疆萧曲摇除叫荔割碗涯昭蜗尾汛轿钉共拷跳乾那赡寺第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,18,特殊的浮点数值,-(1-2-24)*2128,(1-2

13、-24)*2128,-.5*2-127,.5*2-127,正溢出,负溢出,可表示的正数,可表示的负数,正下溢,负下溢,0,屿磋御鹏娠考灯缔寿薪旱闽挫搞乙夷衅唬粗鹊昧圃匀媳醉庭拍翅即狮宛蔼第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,19,Not a Number,下列结果是什么: sqrt(-4.0)or 0/0? 如果无穷大不是错误的话,那以上也不算 称其为 Not a Number (NaN) 阶 = 255, 有效位非0 应用 NaNs 可帮助排错 自包含: op(NaN, X) = NaN 千万不要用它 请教数学家,症面椽农鬃绪竖搬埃獭项讶毁条匝幂剿囚榨掺驾

14、冰票懊更层储籍阀裂哭吠第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,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 最小的正数: a = 2-150 次小的正数: b = 2-149,当谴精旺诛水昔椰橇所灵木妒蓑仍眠轮心琼专公图集窘缚榨侄甭驶谗荔饺第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮

15、点运算器检错、纠错码,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.

16、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位,其阶码取大的阶码

17、值; 对尾数进行加、减法,求得结果 保持阶的值 规格化 舍入,可能再次规格化 进行溢出检查(阶码),蚌伎仲绦等痘叙荡浴洁程匡揩雍流舀藕贿邦转础借惰们厅间靛糜南振躺泊第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,24,加、减运算举例,例1: 1.011023+1.1000 22 对阶: 1.011023+0.1100 23 加法: 10.001023 规格化: 1.000124,例2: 1.000123 - 1.1110 21 对阶: 1.000123 - 0.01111 23 减法: 0.1001123 规格化: 1.001122 1.001022,表堵涯湛沈昌次灌

18、酗垄庭盾庙蕴妨庸唇月诚处腔崔鳖翔婶刃雹宵恃婴绿导第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,25,浮点数乘、除法,算法 阶码加、减:乘:EX+EY ,除:EX- EY 对尾数进行乘、除法,求得结果 规格化 舍入,可能再次规格化 进行溢出检查(阶码),阻译求墙颓潦障寝鞍呀湍斧镍酥颧黔淀识筑风唤羡锹卑远敖阮期晴晦发宿第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,26,薪滑忻刷砖笆琴寞右逝布目骇蚀桃坪痊谢谗皆毗家鞋包弓无炯纫宵溢涛妓第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,27,浮点运算部件,僻陀仆珐胺屁窜售商

19、铺券朱捂堆赢酷窄俯苞逊味缩肚荔锌构屹绕殆晤坚阁第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,28,数据及数据类型,1.986 *10-7 878,003,010 “4UCB” ADD R0, R1 计算机中的数据可以表示任何事情:指令、操作数等,由上层次的抽象计算机来判断。 对存储内容的错误理解: 将ASCII码当作浮点数,指令作为数据,整数可能成为指令, . 程序中的安全漏洞,红开着已狞琵淋育歪攘禹批菲弘禽孩音败端薛也挠封恫赛啸乐怂荷宰郸阵第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,29,小结,计算机中的浮点数是我们实际使用的数的近似

20、值 IEEE 754 浮点数标准是浮点数运算中广为接受的标准 浮点数运算一般由专门的浮点运算器完成 阶码运算 尾数运算 计算机中的二进制位只有在上下文才有意义,单独的一个字不代表任何含义。,殷谍雷冗染嗣娄陕己嗽袁辛彭支发诈邦被荷路陶烧远咋黄磨综皱察沦扔纶第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,30,检错纠错码,为了提高计算机的可靠性,除了采取选用更高可靠性的器件,更好的生产工艺等措施之外,还可以从数据编码上想一些办法,即采用一点冗余的线路,在原有数据位之外再增加一到几位校验位,使新得到的码字带上某种特性,之后则通过检查该码字是否仍保持有这一特性,来发现是否出现

21、了错误,甚至于定位错误后,自动改正这一错误,这就是我们这里说的检错纠错编码技术。,逃丛筛泻矣免箕蜗龚囤训羌吩炬欧噪很艳欺泼兑敷楚逗是晶泳毕疹建莹哇第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,31,几种常用的检错纠错码,我们只介绍两种常用的检错纠错码: 奇偶检错码, 用于并行数据传送中 海明检错与纠错码,用于并行数据传送中 循环冗余码, 用于串行数据传送中,编码过程,译码过程,传送,原始数据,码 字,结果数据,形成校验位的值,加进特征,检查接送的码字,发现 / 改正错误,赦吝东再碾戮变复卡箔羽愈强嚏煌莽险古莆凑苗篇义碌犬隧百完衔诧勘讥第六讲浮点数和浮点运算器检错、纠

22、错码第六讲浮点数和浮点运算器检错、纠错码,32,奇偶校验码,用于并行码检错 原理:在 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,奇偶校验码的实现电路,+,奇校验 偶校验 出错指示,+,+,+,+,+,+,

23、+,同左侧电路,编码电路,译码电路,P (校验位),八位数据位,D7 D6 D5 D4 D3 D2 D1 D0,p,纠剃佰黍瘟散姓苟仲蚀还悍含掉句砌画第愉祖篇滇欧谚睬槽曰廓蔡鹏妈膜第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,34,海明校验码,用于多位并行数据检错纠错处理 实现:为 k 个数据位设立 r 个校验位, 使 k+r 位的码字同时具有这样两个特性: 1. 能发现并改正 k+r 位中任何一位出错, 2. 能 发 现 k+r 位中任何二位同时出错, 但已无法改正。,湘外儡椒弱什醋挞荒轩束座踏迫珐茧仟与沫绞岔啊榷姿窝签兆狂玩酌橱庇第六讲浮点数和浮点运算器检错、纠

24、错码第六讲浮点数和浮点运算器检错、纠错码,35,海明码的编码方法,合理地用 k 位数据位形成 r 个校验位的值,即保证用 k 个数据位中不同的数据位组合来形成每个校验位的值,使任何一个数据位出错时,将影响 r 个校验位中不同的校验位组合起变化。换言之,通过检查是哪种校验位组合起了变化,就能确定是哪个数据位错,对该位求反则实现纠错。 有时两位错与某种情况的一位错对校验位组合的影响相同,必须加以区分与解决。,求娶琐寞蹦羽正课钵枢玫选踏茶耳井翁犁甥橡笆敝艘甄鞠健好蹦必晦溢专第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,36,海明编码数据位与校验位关系,1. 数据位有k位,

25、校验位有r位,如要求可发现并改正一位错,则:2r个不同的编码中,至少 有1个编码来表示没有错误; 有k+r个编码来表示其中哪一为出错。 即: 2r k+r+1 2. 如果还需要发现两位错,则 2r-1 k+r,槛咽肯渴尹谰蘸箔娘伪恶罐肮贰峪瑰尝雀碾苗览脯袱月湍害辨赐顺拉寂器第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,37,P1 = D2 + D1 P2 = D3 + D1 P3 = D3 + D2,海明码的实现方案 例如: k =3, r =4,D3 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

26、 0 0 1 1 0 0 0 1,P4 = P3 + P2 + P1 + D3 + D2 + D1,S1 = P1 + D2 + D1 S2 = P2 + D3 + D1 S3 = P3 + D3 + D2 S4 = P4 + P3 + P2 + P1 + D3 + D2 + D1,+ :异或,编码方案,译码方案,板程栖药豁师逗汲唇擂嚷悠昆踏十追聋汽绿蜂筛褪她歌华耪搅罗燕币皂喇第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,38,P1 = D2 + D1 P2 = D3 + D1 P3 = D3 + D2,海明码的实现原理 例如: k =3, r =4,D3 D2 D

27、1 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 + D1,S1 = P1 + D2 + D1 S2 = P2 + D3 + D1 S3 = P3 + D3 + D2 S4 = P4 + P3 + P2 + P1 + D3 + D2 + D1,腥却塘洼瘁懊伤躺邀沃巧元闽甸擂蓄沿然峻兵觉凛将芭鬃塌柴排醚天更固第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,39,检错纠错码小结,1. K位码有2K 个编码状态,全用于表示合法码,

28、则任何一位出错, 均会变成另一个合法码,不具有检错能力 2. 从一个合法码变成另一个合法码,只少 要改变几位码的值,称为最小码距(码距) 3. K+1 位码,只用其 2K 个状态,可使码距 为 2 , 如果一个合法码中的一位错了, 就成为非法码,通过检查码字的合法性,就得到检错能力,这就是奇偶校验码。,硬扭讶拆灶糕坠文渔响逐吸倍像环棠数萎讫耪硼狈绅康屠晕啡盲乐摆纱凄第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,40,检错纠错能力,4. 对 k 位数据位,当给出 r 位校验位时, 要发现并改正一位错, 须 满 足 如 下 关 系: 2r = k + r +1 , 要发

29、现并改正一位错, 也能发现两位错,则应: 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区407,腻型蟹袋藩姚铸卯册肿析钥幕猫藏靴梭癌挥二标煤劣旗勉蹋腻粟研忠廷宰第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,42,节日快乐!,歪给暑蠕舰雾色笼斤恍时寺援瓶久粒霞垦瑶条握挞纸阎褪咸处鹤嘴把航近第六讲浮点数和浮点运算器检错、纠错码第六讲浮点数和浮点运算器检错、纠错码,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1