计算机组成原理第3章 运算器和运算方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章运算方法和运算器3.1补码的移位运算
1、左移运算:各位依次左移,末位补0
对于算术左移,若没有改变符号位,左移相当于乘以2。
2、右移运算:
算术右移:符号位不变,各位(包括符号位)依次右移。(相当于除以2)逻辑右移:最高位补0,其余各位依次右移
例1:已知X=0.1011 ,Y=-0.0101 求 [0.5X]补;[0.25X]补;
[-X]补;2[-X]补;[0.5Y]补;[0.25Y]补; [-Y]补;2[-Y]补[X]补=0.1011 [Y]补=1.1011
[0.5X]补=0.01011 [0.5Y]补=1.11011
[0.25X]补=0.001011 [0.25Y]补=1.111011
[-X]补=1.0101 [-Y]补=0.0101
2[-X]补=0.1010 (溢出) 2[-Y]补=0.1010
3.2定点加减法运算及其实现
3.2.1 补码加减法运算方法
由于计算机中的进行定点数的加减运算大都是采用补码。
(1)公式:
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补+[-Y]补(证明过程见教材P38)
例1 X=0.001010 Y=-0.100011 求[X-Y]补,[X+Y]补
解:[X]补=0.001010 [-Y]补=0.100011
则 [X-Y]补=[X]补+[-Y]补=0.001010 + 0.100011=0.101101 [X]补=0.001010 [Y]补=1.011101
则 [X+Y]补=[X]补+[Y]补=0.001010 + 1.011101=1.100111
例2:已知X=+0.25,Y=-0.625,求X+Y; X-Y写出计算的过程.
例3:已知X=25,Y=-9,求X+Y; X-Y写出计算的过程.
例4:已知X=-25,Y=-9,求X+Y; X-Y写出计算的过程.
解: (8位二进制表示)
例2: X=0.0100000 Y=-0.1010000
[X]补=0.0100000 [Y]补=1.0110000
则 [X+Y]补=[X]补+[Y]补=0.0100000 + 1.0110000=1.1010000
[X+Y]原=-0.0110000=(-0.375)D
[X]补=0.0100000 ,[-Y]补=0.1010000
则 [X-Y]补 = [X]补+[-Y]补 = 0.0100000+0.1010000=0.1110000
[X+Y]原 = 0.1110000 =(0.875)D
例3: X=+0011001 Y=-0001001
[X]补=00011001,[Y]补=11110111
则 [X+Y]补 = [X]补+[Y]补= 00011001 + 11110111= 00010000
[X+Y]原 =+0010000=(+16)D
[X]补= 00011001 ,[-Y]补= 00001001
则 [X-Y]补 = [X]补+[-Y]补= 00011001 + 00001001= 00100010
[X+Y]原 = +0100010 =(34)D
例4: X=-0011001 Y=-0001001
[X]补=11100111,[Y]补=11110111
则 [X+Y]补 = [X]补+[Y]补= 11100111 + 11110111
[X+Y]原 =-00100010=(-34)D
[X]补= 11100111 ,[-Y]补= 00001001
则 [X-Y]补 = [X]补+[-Y]补= 11100111 + 00001001= 11110000
[X+Y]原 = -0010000 =(-16)D
3.2.2 定点加减法运算中的溢出问题
溢出:运算结果大于机器所能表示的最大正数或者小于机器所能表示的最小负数.溢出只是针对带符号数的运算.
比如:[X]补=0.1010,[Y]补=0.1001,那么
[X]补+[Y]补=1.0011(溢出)
溢出是一种错误,计算机中运算时必须能够发现这个现象,并加以处理
判断溢出的方法:
1、采用变形补码法
[X+Y] 变补=[X] 变补+[Y] 变补
[X-Y] 变补=[X] 变补+[-Y] 变补
例1 X=0.1011 Y=0.0011 求[X+Y]补
解: [X]变补 = 00.1011, [Y]变补 = 00.0011
[X+Y]变补 = 00.1011 + 00.0011 = 00.1110
所以 [X+Y]补 = 0.1110
例2 X=0.1011 Y=0.1001 求[X+Y]补
解: [X]变补 = 00.1011 [Y]变补 = 00.1001
[X+Y]变补 = 00.1011 + 00.1001 = 01.0100
运算结果的两符号位是01,不相同,发生溢出,因第一符号位是0,代表正数,所以称这种溢出为“正溢出”。
例3 X=-0.1101 Y=-0.1010 求[X+Y]补
解: [X]变补 = 11.0011 [Y]变补 = 11.0110
结果的两符号位是10,不相同,发生溢出,因第一符号位是1,代表负数,所以称这种溢出为“负溢出”。
总结:判断溢出的原则:
当两符号位相同时,正确。“00”表正数,“11”表负数。
当两符号位不同时,溢出;“01”表正溢出,“10”表负溢出
2、利用符号位的进位信号判断
原理:设数码位向符号位的进位为C n-1,符号位向更高位的进位为C n 。则 OF= C n-1 ⊕ C n
当 OF为“0”表示无溢出,为“1”表示溢出了。
比如: [X]补=0.1010,[Y]补=0.1001
[X]补+[Y]补=1.0011
C n-1=1, C n =0 则OF=1
3根据加数、被加数、和的符号判断
当操作数中的加数与被加数符号相同时,若结果的符号与操作数的符号不一致,表示溢出;否则,表示无溢出.
3.2.1 补码加减法运算的实现
补码运算只需要设置一个加法器。采用串行进位方式的n位并行加法器的逻辑结构。
n个全加器(FA n-1~FA0),进位信号C i从低位向高位逐位串行传送。两个n位长的补