计算机组成原理二章 第6讲 溢出的检测
溢出的检测 2.2.2 溢出的检测 溢出的检测 可能产生溢出的情况 两正数加,变负数,上溢(大于机器所能表示的最大数) 两负数加,变正数,下溢(小于机器所能表示的最小数) 2.2.2 溢出的检测 例3:x=+0.1011, y=+0.1001, 求x+y 例4:x=-0.1101, y=-0.1011, 求x+y * * [例15] x=+1101 , y=+1001 , 求 x+y 。解:[x]补=01011 , [y]补=01001 [x]补 0 1 0 1 1 + [x]补 0 1 0 0 1 —————————————— [x+y]补 1 0 1 0 0两个正数相加的结果成为负数,表示正溢。 [例16] x=-1101 , y=-1011 , 求 x+y 。解:[x]补=10011 , [y]补=10101 [x]补 1 0 0 1 1 + [x]补 1 0 1 0 1 —————————————— [x+y]补 0 1 0 0 0两个负数相加的结果成为正数,表示负溢。 2.2.3 溢出概念与检测方法 溢出的概念 2.2.2 溢出的检测 一、检测方法 1、双符号位法(参与加减运算的数采用变形补码表示) 什么是变形补码? 对于定点小数:x0.x1x2……xn x 1>x≥0 [x]补= 4+x 0≥x >-1 2.2.3 溢出概念与检测方法 定点整数x0x1x2…xn x 2n>x≥0 [x]补= 2n+2+x 0≥x ≥ -2n 举例: x=+0.1100, y=+0.1000, X,y的变形补码: [x]补 0 0 . 1 1 0 0 [y]补 0 0 . 1 0 0 0 双符号位 举例: x=-1100 , y=-1000 , X和y的变形补码: 。 [x]补=24+2 +(-1100) =1000000-1100 =1 1 0 1 0 0 [y]补=24+2 +(-1000) =1000000-1000 =1 1 1 0 0 0 双符号位 变形补码运算结果的两个符号位: Sf1 Sf2 0 0正确(正数)01正溢10负溢11正确(负数) Sf1 表示正确的符号, 逻辑表达式为V=Sf1⊕Sf2, V=1表示溢出产生 可以用异或门来实现 2.2.3溢出的检测 举例: x=+0.1100, y=+0.1000,求x+y [x]补 0 0 . 1 1 0 0 + [y]补 0 0 . 1 0 0 0 ———————————————— 0 1 . 0 1 0 0 x=-0.1100, y=-0.1000,求x+y [x]补 1 1 . 0 1 0 0 + [y]补 1 1 . 1 0 0 0 ———————————————— 1 0 . 1 1 0 0 [例17] x=+1100 , y=+1000 , 求 x+y 。解: [x]补 = 001100 , [y]补 = 001000 [x]补 0 0 1 1 0 0 + [y]补 0 0 1 0 0 0 ———————————————— [x+y]补 0 1 0 1 0 0 (表示正溢) [例18] x=-1100 , y=-1000 , 求 x+y 。解: [x]补 = 110100 , [y]补 = 111000 [x]补 1 1 0 1 0 0 + [y]补 1 1 1 0 0 0 ———————————————— [x+y]补 1 0 1 1 0 0