第2章 运算方法基础与运算器 2.1数的机器码表示方法 真值:一般书写表示的数,即数的实际值. 如: -010,1010 机器数:将符号位和数值一起编码表示数的表 示方法(如原码,补码,反码等), 即数的实际值的机内编码.机器数也 称为机器码. 2.2 二进制带符号数的表示方法 2.2.1原码的表示法 原码表示法是用机器数的最高一位代表符 号,以下各位给出数值的绝对值的表示方 法. 通常:最高位为0代表正数,最高位为1代表 负数. 1.定点小数的原码表示 [ ] ? ? ? ≤ < ? + = ? < ≤ = 0 1 1 1 1 0 x x x x x x 原 定义: 式中 是真值, 是 的原码 x x [ ]原x如,1001 . 0 ? = x [ ] 1001 . 1 1 = + = x x 原 一般形式:如 ,则 n x x x x L 2 1 . 0 + = [ ] n x x x x L 2 1 . 0 = 原nxxxxL21.0?=[]nxxxxL21.1=原如,则 例:如,1001 . 0 + = x [ ] 1001 . 0 = 原x2.定点整数的原码表示 设机器字长为n+1位,数值部分占n 位. [ ] ? ? ? ≤ < ? ? = + < ≤ = 0 2 2 2 2 0 x x x x x x n n n n 原 定义: 例:如 ,则 1001 + = x [ ] 01001 = 原x1001 ? = x [ ] 11001 1001 10000 24 = + = + = x x 原如,则 一般 地: n x x x x L 2 1 + = [ ] n x x x x L 2 1 0 = 原如,则 n x x x x L 2 1 ? = [ ] n n x x x x x L 2 1 1 2 = + = 原如,则 [ ] ? ? ? ≤ < ? ? = + < ≤ = 0 2 2 2 2 0 x x x x x x n n n n 原3.原码的性质 (1)真值0在原码表示中有两种形式,以定点整 数为例 [ ] 0000 0 = + 原[]1000 0 = ? 原 原码表示的定点整数,其表示范围为 n n x 2 2 < < ? n x 2 < (2)原码表示的定点小数,其表示范围为 1 1 < < ? x , 即1
+ + y x M 的说明. 1 + n 字长 位,定点整数 由补码表示范围知: 2 2 M x n = ≤ 同理 0 2 2 ≥ + + ∴ ? ? ≥ ∴ + ≥ ? = ≤ y x M y x M y x M M y n 1 2 + n n 2 1 2 ? n 0 2 M 2 M 0 x 1 x L n x 权: 例,101 , 1011 ? = + = y x (机器字长为5位),求yx+解:11011 , 01011 = = 补补yx于是: [ ] 10101 = 原y01011 + 11011 1 00110 [ ] = 补x[]=补y[]=+补yx)2(mod 5 自然丢失 110 + = + ∴ y x 2.4.2 负数的补码及补码的运算规则 1.负数的补码 [ ]补y?与的关系的一个简单的证明: [ ]补y (mod ) ( M y x y x y x 补补补补?+=?+=?通常已知的是 [ ]补yyyx?Q,∴问题是如何根据 求[]补 y [ ]补y?[][] (mod mod ) (mod 2 ) (mod ) (mod M y M y M M M M y y M y M y M y M y 补补补补补补?=?∴==?+∴?=?+=Q以定点整数为例 设字长 位1+n[][]1111 0 100 + ? = ? 补补yyLL1+n1+n1+n位1+n位[]补 y = 末位加1 定点小数证法类似 末位加1 [ ] [ ]补补yy=?或者说对 (包括符号位)求反且末位加1, 即求得 . [ ]补y?于是得到由 求 的法则: [ ]补y?[]补 y [ ]补y例:设 机器字长5位,求,101 ? = y [ ]补y?[][][][]00101 00001 00100 11011 10101 = + = = ? ∴ = ∴ = 补补补原yyyy解: 末位加1 2.补码的运算规则 根据以上讨论,可将补码加减运算规则归纳如下: 补码加减运算规则 (1)参加运算的操作数用补码表示. (2)符号位参加运算. (3)若机器指令为相加,则两数补码直接 相加;若机器指令为相减,则将减数 补码连同符号位一起变反加1后再与被 减数相加. (4)运算结果用补码表示. 例:如[ ] [ ] 11001101 , 00110110 = = 补补yx[][]补 补yxyx?+,求解: 00110110 + 11001101 1 00000011 [ ]补x[]补 y [ ]补yx+自然丢失 [ ] 00000011 = + ∴ 补yx[][]00110011 00000001 00110010 = + = = ? 补补yy末位加1 00110110 + 00110011 01101001 [ ]补x[]补 y ? [ ]补yx?[]01101001 = ? ∴ 补yx定点加法运算小结 ? 补码加法 ? 补码减法 ? 负数的补码 (mod M y x y x 补补补+=+M是正整数 (mod ) ( M y x y x y x 补补补补?+=?+=?末位加1 [ ] [ ]补补yy=??补码的运算规则 (1)参加运算的操作数用补码表示. (2)符号位参加运算. (3)若机器指令为相加,则两数补码直接 相加;若机器指令为相减,则将减数 补码连同符号位一起变反加1后再与被 减数相加. (4)运算结果用补码表示. 2.4.3 溢出与检测方法. 在确定了运算字长和数据的表示方法后,所能表示 的数据范围也就相应确定了. 1.溢出产生的条件:两个异号数相加不会产生溢出. 只有两个同号数相加(或两个异号数相减)才会产 生溢出. 上溢:两个正数相加,结果大于机器所能表示的最大 正数,称为上溢. 下溢:两个负数相加,结果小于机器所能表示的最小 负数,称为下溢. 例:以定点整数为例,设字长8位,补码表示,最高位为符 号位,范围-128~127 ⑴ 31+13=44 00011111 + 00001101 00101100 ⑵ 63+66=129 (上溢) 00111111 + 01000010 10000001 ⑶ (- 31)+(-12)= -43 11100001 + 11110100 1 11010101 自然丢失 ⑷ (-63)+(-66)= -129 (下溢) 11000001 + 10111110 1 01111111 自然丢失 总结上面的例子,可以得出: 2.判断溢出的方法: 0 0 0 0 0 0 s y x s y x V + = (1)采用一个符号位判断的方法:当两个同号数的补 码相加,若所得结果符号位与两数补码的符号位不 同,则表明溢出.即.分别表示 及结果 的符号位. 0 0 0 , , s y x [ ] [ ]补补yx补补yx+解释 若[ ] [ ] n n y y y y x x x x L L 2 1 2 1 0 , 0 = = 补补(字长 位), 1 + n 则如 是 的补 码.则 的符号位只能是0,因两个正数相加 不可能是负数.如 的符号位是1,则意味着结 果出错.从相加的结果看,最高位,即符号位为1意味 着是负数,但从二进制相加来看,意味着最高数值位产 生了进位,因此超出了 位字长的机器所能表示数 的范围,故产生溢出.当 时类似. 2 (mod 1 + + = + n y x y x 补补补yx+[][]补 补yx+[][]补 补yx+1+n0,0<
-
两位二进制减法器 四位二进制减法器 二位二进制减法器 4位二进制减法器 eda2位二进制减法器 4位同步二进制减法器 八位二进制数减法器 二进制减法 二进制减法怎么算 二进制减法运算