1011/1101010 循环左移 1011 11010101 10101011 1000 10101100出错位变反 出错一 0000 1011000 1100 10110001 1110 1011 01100010 101 共循环左移7次,正确校验码为:V(X=1100010 注意:关于对Gx)的要求 应有≥(r+1)位,对不同位数据的出错有惟一的特征码 loll or lol 11101 or 10111 175 4357 111010001 100110111 2.2定点数的加减法运算及加法器 2.2.1补码定点加减法运算 1.补码定点加法 补码加法规则 任意两数的补码之和等于该两数和的补码 [X]补+[Y]*=[X+Y](mod2) (2.18) 设[X]=x0x1x2…xan,Y]=yoyy2ya 1≤X<1,-1≤Y<1,-1≤X+Y<l 【证明】根据操作数的不同情况加以证明: ①X≥0,Y≥0,则X+Y≥0。 根据正数补码的定义:X]=X,[Y]=Y,得到X]+Y]=X+Y。 X+Y≥0 所以[X]+Y]=【X+Y]h=X+Y ②X<0,y<0,则x+y<0 x]=2+x,y]=2+y,则
共循环左移 7 次,正确校验码为:V(X)=1100010 注意:关于对 G(x)的要求: 应有≥(r+1)位,对不同位数据的出错有惟一的特征码 k U D G(x) 7 4 3 1011 or 1101 3 4 11101 or 10111 15 11 3 10011 7 5 111010001 5 7 100110111 2.2 定点数的加减法运算及加法器 2.2.1 补码定点加减法运算 1. 补码定点加法 补码加法规则: 任意两数的补码之和等于该两数和的补码。 [X]补 + [Y]补= [X+Y]补 (mod 2) (2.18) 设[X]补=x0.x1x2…xn,[Y]补=y0.y1y2…yn -1≤X<1,-1≤Y<1,-1≤X+Y<1 【证明】根据操作数的不同情况加以证明: ① X≥0,Y≥0,则 X+Y≥0。 根据正数补码的定义:[X]补=X,[Y]补=Y,得到[X]补+[ Y]补=X+Y。 ∵X+Y≥0,∴ [X+Y]补=X+Y。 所以[X]补+[Y]补=[X+Y]补=X+Y ②X<0,y<0,则 x+y<0 ∵ [x]补=2+x,[y]补=2+y,则
x]+y]=2+x+2+y=2+(x+y)(mod2) 又∵x+y<0,∴,x+yl=2+(x+y) 所以区x]+y]=[x+y]=2+(x+y)(mod 设x,y任一为正数(例如x,任一为负数(例如y) lyl=2+y,则 x]e+y]=x+(2+y)=2+(x+y) 当x+y≥0时,2+(x+y)≥2,对于模2来说,2必然丢掉 ap [x]++Ly]*=2+xty=xty (mod 2) 所以[x]+ly]=[x+y]=x+y 当x+y<0时,x+y]=2+(x+y) 证毕 例:X=+0.1011,Y=0.0101,求X+Y 【解】:X]=0.1011,Y]=1.1011 D0.1011 +]10.0110 所以,ⅹ+Y=+0.0110 补码加法的特点: ①符号位作为数的一部分参加运算,符号位的进位丢掉 ②运算结果为补码形式 2.补码定点减法 (1)补码减法的规则 推论:[X-Y]=区X+(-Y)]=[X]+-Y 已知[Y],那么[-Y]*=? )求补 由Y求[Y],称为对Y求补 (3)求补规则 同符号位在内各位变反,末位加1。写成 by]表示对[y]的各位(包括符号位)求反。 例如:yl=1.1010,则y]h=0.0110 可见:求补时,从Y的最低位开始向高位扫描,见到第一个“1”,包括这个“1”的 各位不变,其余各位变反 【例2.14】已知x]=1.1010,y]=1.0110,求[x-y 【解】:【xy]*=x]+l-y]h yl*=0.1010 ∴[x-yln=1.1010+0.1010 10.0100=0.0100( 用真值运算并加以验算 ∵x=0.0110 -0.1010
[x]补+[y]补=2+x+2+y=2+(x+y) (mod 2) 又 ∵ x+y<0,∴ [x+y]补=2+(x+y) 所以 [x]补+[y]补=[x+y]补=2+(x+y) (mod 2) ③设 x,y 任一为正数(例如 x),任一为负数(例如 y)。 [x]补=x,[y]补=2+y,则 [x]补+[y]补=x+(2+y)=2+(x+y) 当 x+y≥0 时,2+(x+y)≥2,对于模 2 来说,2 必然丢掉。 即 [x]补+[y]补=2+x+y=x+y (mod 2), 又 ∵ x+y≥0,∴ [x+y]补=x+y 所以[x]补+[y]补=[x+y]补=x+y 当x+y<0 时,[x+y]补=2+(x+y) 证毕 例:X=+0.1011,Y=-0.0101,求 X+Y 【解】: [X]补= 0.1011 , [Y]补= 1.1011 所以, X+Y= +0.0110 补码加法的特点: ①.符号位作为数的一部分参加运算, 符号位的进位丢掉。 ②.运算结果为补码形式。 2. 补码定点减法 ¬ −n ¬ (1)补码减法的规则: 推论: [X-Y]补= [X+(-Y)]补 =[X]补+[-Y]补 已知 [Y]补 ,那么 [-Y]补=? (2)求补: 由[Y]补求[-Y]补,称为对Y求补。 (3)求补规则 : 连同符号位在内各位变反, 末位加 1。写成: [-y]补= [y]补+2 [y]补表示对 [y]补的各位(包括符号位)求反。 例如:[y]补=1.1010,则[-y]补=0.0110 可见:求补时,从[Y]补的最低位开始向高位扫描,见到第一个“1”,包括这个“1”的 各位不变,其余各位变反。 【例 2.14】 已知[x]补=1.1010, [y]补=1.0110,求[x-y]补。 【解】:[x-y]补=[x]补+[-y]补 [-y]补=0.1010 ∴ [x-y]补=1.1010+0.1010 =10.0100 = 0.0100 (mod 2) 用真值运算并加以验算 ∵ x=-0.0110 y=-0.1010
xy=0.0110-(-0.1010) =0.0100 补码加减运算的规则可归纳如下 ①参加运算的操作数均为补码表示的形式。 ②加减运算可统一为加法运算进行,符号位作为数的一部分参加运算,符号位的进位去掉 ③运算结果为补码形式 2.2.2原码定点加减法运算 1.原码加减法运算的特点: ①符号位不能作为数的一部分参加运算 ②符号位和加减法指令共同作为运算的依据 2.原码加减法运算规则 ①对加法指令执行“同号求和,异号求差”;对减法指令执行“异号求和,同号求差”。 ②求和时,将两操作数的数值位相加得到和的数值位。若数值最高位产生进位,则结 出。和的符号位采用第一操作数(被加数/被减数)的符号。 时,第一操作数的数值位加上第二操作数(加数减数)的数值位的补码。分两 种情况讨论 a最高数值位有进位,表明加法结果为正,所得数值为正确,结果的符号位采用第 操作数的符号 最高数值位无进位,表明加法结果为负(补码形式),应对其求补,还原为绝对值形 式的数值位,结果的符号位为第一操作数的符号变反。 3.例子: 【例2.16】已知区x]a=0.101,y]=1.1001,求[x+y]k和x-y]l 解:先求[x+y,依运算规则,对两数求差,即 l10l+0lll=10100 最高数值位产生进位,所得数值位0100正确,再加上第一操作数的符号位0,则 x+yls=0010 再求x-ylk,依运算规则,应对两数求和,即 ll0l+.100l=1.0110 2.2.3溢出及其判别: 1.溢出定义:运算结果超出机器的表数范围称为溢出。 【例2.17】设字长为8位(包括1位符号),若十进制数x=73,y=83,用二进制 补码求[x+y]l。 【解】x=(-73)0=(-1001001h,x]=101011l =(-83)0=(-1010011)2,[y]=101011o1 则[x+yl*=101011+1010110l=01100100(运算结果溢出,x+y=156<-128) 2定点加减法溢出条件 ①同号数相加或异号数相减 ②运算结果超载。 3如何判断溢出(以补码加法为例): (1)单符号位的判溢 两操作数同号而且和数的符号与操作数的符号不同。 设两操作数[A]=aa1a2x…an,[B]=bb1b2…bn
∴ x-y=-0.0110-(-0.1010) =0.0100 补码加减运算的规则可归纳如下: ①参加运算的操作数均为补码表示的形式。 ②加减运算可统一为加法运算进行,符号位作为数的一部分参加运算,符号位的进位去掉。 ③运算结果为补码形式。 2.2.2 原码定点加减法运算 1. 原码加减法运算的特点: ① 符号位不能作为数的一部分参加运算 ② 符号位和加减法指令共同作为运算的依据 2.原码加减法运算规则: ①对加法指令执行“同号求和,异号求差”;对减法指令执行“异号求和,同号求差”。 ②求和时,将两操作数的数值位相加得到和的数值位。若数值最高位产生进位,则结 果溢出。和的符号位采用第一操作数(被加数/被减数)的符号。 ③求差时,第一操作数的数值位加上第二操作数(加数/减数)的数值位的补码。分两 种情况讨论: a.最高数值位有进位,表明加法结果为正,所得数值为正确,结果的符号位采用第一 操作数的符号。 b.最高数值位无进位,表明加法结果为负(补码形式),应对其求补,还原为绝对值形 式的数值位,结果的符号位为第一操作数的符号变反。 3.例子: 【例 2.16】 已知[x]原=0.1101, [y]原=1.1001,求[x+y]原和[x-y]原。 解:先求[x+y]原,依运算规则,对两数求差,即 .1101+.0111=1.0100 ∵ 最高数值位产生进位,所得数值位.0100 正确,再加上第一操作数的符号位 0,则 [x+y]原=0.0100。 再求[x-y]原,依运算规则,应对两数求和,即 .1101+.1001=1.0110 2.2.3 溢出及其判别: 1. 溢出定义:运算结果超出机器的表数范围称为溢出。 【例 2.17】 设字长为 8 位(包括 1 位符号),若十进制数x=-73,y=-83,用二进制 补码求[x+y]补。 【解】x=(-73)10=(-1001001)2,[x]补=10110111 y=(-83)10=(-1010011)2,[y]补=10101101 则 [x+y]补=10110111+10101101=01100100 (运算结果溢出,x+y=-156<-128) 2.定点加减法溢出条件: ① 同号数相加或异号数相减; ② 运算结果超载。 3.如何判断溢出(以补码加法为例): (1) 单符号位的判溢 两操作数同号而且和数的符号与操作数的符号不同。 设两操作数 [A]补=as.a1a2…an,[B]补=bs.b1b2…bn
和数S]=SS1S2…Sa,则: OF=a4bS,+a,b,S,=(as⊕S,)b,⊕S,)或 OF=Cn⊕Cn1 式中Cn最高位(符号位进位,Cn次高位进位,当OF=1时溢出 例如:x=+0.1011,y=+0.1001,求x+y 解:x]=0.101l,y]e=0.1001 [x0.1011 +by]补0.1001 x+yl#1.0100 可见:两正数相加的结果为负数,显然是由于溢出造成的错误。 (2)双符号位的判溢 ①模4补码(变形补码、双符号补码)定义: 2>X≥0 0>X≥-2 例如: x=+0.1011则[x]=00.1011 y=0.10lly]*'=l0101 可见:用模4补码表示-1≤x<1时,小数点左边两位的状态(00或11)总是相同的,故称 模4补码为变形补码 ②双符号位判溢 若[X+Y]=SS3S1S2…Sn,当S:≠S时为溢出,写为 OFSs ESs *但无论溢出与否,第一符号位S3始终表示正确的数符。 例如:X=+0.1100,Y=+0.1000,求X+Y 解:[X]=00.10, Y]=00.1000 [X]补00.1100 +[Y]补 X+Y]01.0100 两个符号位出现“o1”,表示已经溢出,即结果大于+1 4.溢出的处理:转溢出中断处理或停机 2.2.4二进制并行加减法器 全加器 由逻辑门电路组成的二进制加法线路。(见课本P47图2.2) (1)全加和F,和全加进位Ca1的逻辑表达式 F=A,⊕B,田C C1=AB1·(A⊕B)C (2)一位全加器的逻辑图和符号表示
和数 [S]补= Ss.S1S2…Sn, 则: ( )( ) sssSssssss OF ⊕⊕=⋅⋅+⋅⋅= SbSaSbaSba 或 ⊕= CCOF nn −1 式中 Cn——最高位(符号位)进位,Cn-1——次高位进位,当OF=1 时溢出。 例如:x=+0.1011, y=+0.1001, 求 x+y 解: [x]补=0.1011 , [y]补=0.1001 [x]补 0.1011 + [y]补 0.1001 [x+y]补 1.0100 可见:两正数相加的结果为负数,显然是由于溢出造成的错误。 (2) 双符号位的判溢 ⎩ ⎨ ⎧ + X X 4 20 02 −≥> ≥> X X ① 模 4 补码(变形补码、双符号补码)定义: [X]补' = 例如: x=+0.1011 则[x]补' =00.1011 y=-0.1011 [y]补' =11.0101 可见:用模 4 补码表示-1≤x<1 时,小数点左边两位的状态(00 或 11)总是相同的,故称 模 4 补码为变形补码。 ② 双符号位判溢 若[X+Y]补' =Ss'Ss.S1S2……Sn, 当Ss'≠Ss时为溢出,写为 OF=Ss'⊕Ss * 但无论溢出与否,第一符号位Ss'始终表示正确的数符。 例如:X = +0.1100,Y=+0.1000,求 X+Y 解: [X]补=00.1100, [Y]补=00.1000 [X]补 00.1100 + [Y]补 00.1000 [X+Y]补 01.0100 两个符号位出现“01”,表示已经溢出,即结果大于+1 4. 溢出的处理:转溢出中断处理或停机。 2.2.4 二进制并行加减法器 1. 全加器 +1 i ⊕ ⊕ +1 由逻辑门电路组成的二进制加法线路。(见课本 P47 图 2.2) (1) 全加和 F i 和全加进位 Ci 的逻辑表达式: F =A i Bi C i CABA iiiii C ⋅ ⊕ B )( i = (2)一位全加器的逻辑图和符号表示
(a)逻辑图 (b)符号表示 图2.2全加器的逻辑图和符号表示 2.串行进位和并行进位 (1)串行进位(行波进位) 如图所示的加法器,位间进位是从低位往高位逐位串行传送,因此称为串行进位或行 Fo M=0加 符号位 图23行波进位的补码加法碱法器 最长进位传送的情况之 加法运算:A=11…11,B=00…01,C0=0 结论:从逻辑上解决进位的并行(同时)传送,是使并行加法电路实现真正并行运算 的关键 (2)并行进位 以4位加法器为例:
C i+1 F i A i B i C i (a) 逻辑图 FA C C i i+1 F i A i B i (b) 符号表示 图 2.2 全加器的逻辑图和符号表示 2.串行进位和并行进位 (1) 串行进位(行波进位) 如图所示的加法器,位间进位是从低位往高位逐位串行传送,因此称为串行进位或行 波进位。 OF 最长进位传送的情况之一: 加法运算:A=11…11,B=00…01,C0=0 结论:从逻辑上解决进位的并行(同时)传送,是使并行加法电路实现真正并行运算 的关键。 (2)并行进位 以 4 位加法器为例: 由于 Ci+1= Ai Bi+( Ai +Bi) Ci B’n-1 B’n-2 B’1 A0 Fn-1 M=1 减 C C2 C1 C0 n-2 Cn-1 Cn FA FA FA FA Bn-1 An-1 Bn-2 An-2 …… B1 A1 B0 ……… 符号位 M=0 加 方式控制 M Fn-2 …… F1 F0 图 2.3 行波进位的补码加法/减法器 B’0