计算机组成基础
习题详解
(初稿)
孙德文
上海交通大学软件学院
2009.3
第1章 计算机系统概论
1.1 数字计算机和模拟计算机的区别?
解:电子数字计算机的特点是数据由离散量来表示,是对离散变量进行处理和运算的解算装置。
电子模拟计算机的特点是数据由连续量来表示,是对连续变量进行运算的解算装置。在电子模拟计算机中,变量为连续变化的直流电压、电流或电荷。
1.2 说明冯诺依曼计算机的设计思想?写出冯诺依曼计算机的主要组成部分?
解:冯诺依曼计算机的设计思想是:
提出了“存储程序”的概念,程序设计者按计算要求编制好程序,将程序和运行程序中所用的数据以二进制代码的形式存入计算机的存储器中,由计算机自动执行程序。使电子计算机有了通用性,只要能写出正确的指令,计算机执行时就无须人工干预。
冯诺依曼计算机的主要组成部分是:
运算器、控制器、存储器、输入设备和输出设备。其中运算器和控制器合称“中央处理机”(或称为CPU,Central Processing Unit),CPU与存储器(内存储器)合称为“主机”,而输入设备和输出设备合称为“外部设备”。
1.3 描述计算机的发展过程及应用范围?
解:电子数字计算机从1946年第一台ENIAC机至今可分为4代:
第一代—— 电子管计算机;
第二代——晶体管计算机
第三代——集成电路计算机
第四代——大规模和超大规模集成电路计算机
应用范围
1.4 计算机软件的组成?并举例说明。
解:计算机的主要应用领域包括:数值计算、数据处理、计算机控制、计算机辅助设计/计算机辅助制造和人工智能等。
1.5 说明计算机系统的层次结构及各层次结构的特点?
解:计算机系统的层次结构共分8级,从L0~L7,其中:
L0为硬联逻辑,实现微指令的控制时序,是计算机系统硬件的内核;
L1为微程序控制,根据机器指令配备一套微指令,给出微操作控制信号;
L2为机器语言级计算机,该级的机器语言就是该计算机的指令系统;
L3为操作系统,为用户提供一个操作环境;
L4为汇编语言级计算机,该级的机器语言是汇编语言,由相应级的计算机进行解释、执行;
L5为高级语言类计算机,该级的机器语言是各种高级语言,该级计算机基本上脱离了物理计算机,供程序员使用;
L6 为应用语言计算机,该级的机器语言是面向非计算机专业人员直接使用的应用语言;
L7为应用系统分析和设计,是系统总体分析级,用以建立数学模型和算法,确定系统配置。
第2章 运算基础----数值的机器级表示
2.1 写出下列十进制数的8位二进制补码表示
(1) 54 (2) 37
(3) 111 (4) 253
(5) 0.1 (6) 0.63
(7) 0.34 (8) 0.21
解:
(1) +54 = 00110110B (32+16+6)
(2) +37 = 00100101B (32+5)
(3) +111 = 01101111B (64+32+15)
(4) +253 =0 11111101B (255-2) 超过8位补码范围
(5) +0.1 = 0.0001101 (0.1 = 12.8/128 = 13/128 )
(6) +0.63 = 0.1010001B (0.63=80.6/128=81 /128)
(7) +0.34 = 0.0101100 (0.34 = 43.52/128 =44/ 128)
(8) +0.21 = 0.0011011 (0.21 = 26.88 / 128= 27 /128)
2.2 转换下列二进制数为十进制数
(1) 10111101 (2) 10001001
(3) 0.1011111 (4) 0.0011010
(5) 10011001.110011 (6) 111000111
解:
(1) 10111101 = 189 (255-64-2)
(2) 10001001 = 137 (128+9)
(3) 0.1011111 = 95 / 128 =0.7421875 ( (127-32)/ 128 )
(4) 0.0011010 = 13 / 64 = 0.203125
(5) 10011001 .110011 = 153 +51/64 = 153.796875 ( 153 = 128+16+9 ,
51/64 = (63-12)/64 )
(6) 111000111 = 455 (455 = 511-32-16-8)
2.3 写出下列带符号数的原码、反码、补码和移码表示(用8位二进制代码表示)
(1) +112 (2) 0.625
(3) –124 (4) –0.375
(5) +197 (6)+0.8125
(7) –6 (8) -0.3125
(9) —127 (10) —1
解:
(1) +112 = 127-15
[ +112 ]原 = 01110000B
[ +112 ]反 = 01110000B
[ +112 ]补 = 01110000B
[ +112 ]移 = 11110000B
(2) 0.625 = 0.1010000B
[ 0.625 ]原 =[ 0.625 ]反=[ 0.625 ]补 =0.1010000B
小数无移码
(3) –124 =-(127-3) =-1111100B
[-124 ]原 = 11111100B
[-124 ]反 = 10000011B
[-124 ]补 = 10000100B
[-124 ]移 = 10000100B
(4) –0.375 =-48/128 =-0.0110000B
[-0.375 ]原=1.0110000B
[-0.375 ]反=1.1001111B
[-0.375 ]补=1.1010000B
小数无移码
(5) +197
超过8位范围。无法表示。
(6) +0.8125 =104/128 =0.1101000B
[+0.8125]原=[+0.8125]反=[+0.8125]补= 0.1101000B
小数无移码
(7) –6
[-6 ]原 = 10000110B
[-6 ]反 = 11111001B
[-6 ]补 = 11111010B
[-6 ]移 = 01111010B
(8) -0.3125 = -40/128 =-0.0101000
[-0.3125 ]原=1. 0101000B
[-0.3125 ]反=1.1010111B
[-0.3125 ]补=1.1011000B
小数无移码
(9) —127 = -1111111
[—127]原 = 11111111B
[—127 ]反 = 10000000B
[—127 ]补 = 10000001B
[—127 ]移 = 00000001B
(10) —1
[—1]原 = 10000001B
[—1]反 = 11111110B
[—1 ]补 = 11111111B
[—1 ]移 = 01111111B
2.4 给出以下机器数,求其真值(用二进制和十进制数表示)
(1) [x]原=00100111 (2) [x]补=10101101.
(3) [x]补=01000110 (4) [x]原=10101101
(5) [x]移=01000110 (6) [x]移=11010011
解:
(1) X =+0100111B=+(32+7) =+39
(2) [x]补=10101101B [x]原=11010011B
X=-1010011B =-( 64+16+3)=-83
(3) X = +1000110B=64+6 =+70
(4) [X]原=10101101B
X= -0101101B =-(32+13) =-45
(5) [x]移=01000110
[x]补=11000110
X=-0111010=-58
(6) [x]移=11010011
[x]补=01010011
X=1010011=83
2.5 已知生成多项式为x4+x+1 ,有效信息为10101011,求CRC校验码。
解:
信息——数据字块M = 10101011(共8位)
除数代码为G = 10011 即生成多项式G(X)= x4+x+1
求循环冗余校验码
二进制除法过程如下:
10110110
10011 101010110000
10011
11001
10011
10101
10011
11000
10011
10110
10011
1010
此余数即所求之循环冗余码。
R = 1010
得循环冗余校验码CRC为101010111010
2.6 已知生成多项式为x4+x+1 ,有效信息为100101011,求CRC校验码。
解:
信息——数据字块M = 100101011(共9位)
除数代码为G = 10011 即生成多项式G(X)= x4+x+1
求循环冗余校验码
二进制除法过程如下:
100011001
10011 1001010110000
10011
11011
10011
10000
10011
11000
10011
1011
此余数即所求之循环冗余码。
R = 1011
得循环冗余校验码CRC为1001010111011
2.7 已知生成多项式为x4+x+1,接收到的CRC校验码为1001010111101,请检查有无出错
解:
循环冗余校验码CRC为1001010111101
除数为10011
进行CRC检查
100011001
10011 1001010111101
10011
11011
10011
10001
10011
10101
10011
110
R=110 有错
2.8 已知生成多项式为x4+x+1,接收到的CRC校验码为1001010111010,请检查有无出错
解:
循环冗余校验码CRC为1001010111010
除数为10011
进行CRC检查
100011001
10011 1001010111010
10011
11011
10011
10001
10011
10010
10011
1
R=1 有错
第3章 数值的机器运算
3.1 已知[x]补和[y] 补的值,用补.码加减法计算x+y和x-y(写出结果的二进制表示和十进制表示),并指出结果是否溢出以及溢出的类型(建议采用变形补码什算)。
(1) [x] 补=0.11011 , [y]补=0.00011
(2) [x] 补=0.10111 [y]补=1.00101
(3) [x] 补=1.01010 [y]补=1.10001
(4) [x] 补=1.10011 [y]补=0.11001
解: [y]补=0.00011
(1) [x]补=0.11011 ,
[-y]补=1.11101
[X+Y]补=[x]补+[y]补
= 00.11011
+ 00.00011
__________________
00.11110
X+Y= +15/16 =+0.1111B
[X-Y]补=[x]补+[-y]补
=00.11011
+11.11101
__________________
00.11000
X-Y= +12/16 =+3/4=+0.11B
检验
【 X= + 27/ 32
Y= +3/32
X+Y = +(27+3)/32 =+30/32=0.11110B
X-Y = (27-3)/32=+24/32=+3/4=0.11B 】
(2) [x]补=0.10111 , [y]补=1.00101
[Y]原=1.11011
[-y]补=0.11011
[X+Y]补=[x]补+[y]补
= 00.10111
+ 11.00101
__________________
11.11100
X+Y= -0.001B=-1/8
[X-Y]补=[x]补+[-y]补
= 00.10111
+00.11011
________________
01.10010 (上溢)
[X-Y]补=1.10010 (上溢)
【 修正:X-Y=-0.01110 = -7 / 16+2 = 25 / 16 】
检验
【 X= +23/ 32
Y= -27/32
X+Y = (23-27)/32 =-4/32=-1/8
X-Y = (23+27)/32=+50/32 =25/16 (上溢) 】
(3) [x]补=1.01010 , [y]补=1.10001
[-y]补=0.01111
[X+Y]补=[x]补+[y]补
= 11.01010
+ 11.10001
__________________
10.11011
X+Y=0.11011B=+27/32
[ 修正 27/32-2=27-64=-37/32 ]
[X-Y]补=[x]补+[-y]补
= 11.01010
+ 00.01111
________________
11.11001
X-Y=-0.00111B=-7/32
检验
【X= -22/ 32=-11/16
Y=-15/32
X+Y = (-15-22) /32 =-37/32 (下溢)
X-Y = (-22-(-15)) / 32 =- 7/32 】
(4) [x]补=1.10011 , [y]补=0.11001
[ X= -0.01101=-13/ 32
Y= +0.11001=25/32
X+Y = (-13+25)/32 =12/32=3/8
X-Y = (-13-25)/32=-38/32 = -19 / 16 (下溢) ]
[-y]补=1.00111
[X+Y]补=[x]补+[y]补
= 11.10011
+ 00.11001
__________________
00.01100
X+Y=0.01100B=3/8
[X-Y]补=[x]补+[-y]补
= 11.10011
+ 11.00111
________________
10.11010 (下溢)
[X-Y]补=0.11010 (下溢)
【 修正: X-Y = 13 / 16 – 2 = -19 / 16 】
检验
【 X= -0.01101=-13/ 32
Y= +0.11001=25/32
X+Y = (-13+25)/32 =12/32=3/8
X-Y = (-13-25)/32=-38/32 = -19 / 16 (下溢) 】
3.2 给出x和y的二进制值,用补码加减法计算x+y和x-y(写出结果的二进制表示和十进制表示),并指出结果是否溢出以及溢出的类型(建议采用变形补码什算)、
(1) x=0.10111 y=0.11011 (2) x=0.11101 y=0.10011
(3) x=0.11011 y=-0.1010 (4) x=-0.11111 y=0.11011
(5) x=-0.11011 y=0.1010 (6) x=-0.11010 y=-0.11001
(7) x=-1011101 y=+1101101 (8) x=+1110110 y=-1001101
(9) x=+1101110 y=+1010101 (10) x=-1111111 y=-1101101
解:
(1) X=0.10111 Y=0.11011
[X]补=0.10111
[Y]补=0.11011
[-Y]补=1.00101
[X+Y]补=[X]补+[Y]补
= 00.10111
+ 00.11011
_______________________
01.10010 (上溢)
X+Y 上溢
[X-Y]补=[X]补-[Y]补
= 00.10111
+ 11.00101
_________________________
11.11100
X-Y=-0.00100
=-1/8
检验
【X=23/32 Y=27/32
X+Y=50/32
[ 修正:X+Y=-0.0111 =- 7 / 16 +2 =25 / 16 ]
X-Y=-1/8】
(2) X=0.11101 Y=0.10011
[X]补=0.11101
[Y]补=0.10011
[-Y]补=1.01101
[X+Y]补=[X]补+[Y]补
= 00.11101
+ 00.10011
_______________________
01.10000 (上溢)
X+Y 上溢
[X-Y]补=[X]补-[Y]补
= 00.11101
+ 11.01101
_________________________
00.01010
X-Y=0.01010
=5/16
检验
【X=29/32 Y=19/32
X+Y=48/32 =3 / 2
[ 修正:X+Y = -0.1 = -1 / 2+2 =1.5 ]
X-Y=10/32=5 / 16】
(3) X=0.11011 Y=-0.1010
[X]补=0.11011
[Y]补=1.01100
[-Y]补=0.10100
[X+Y]补=[X]补+[Y]
= 00.11011
+ 11.01100
_______________________
00.00111
X+Y =7/32
[X-Y]补=[X]补-[Y]补
= 00.11011
+ 00.10100
_________________________
01.01111
X-Y=-0.10001=-17/32 (上溢)
[ 修正 -17/32+2=47/32 ]
检验
【X=27/32 Y=-20/32
X+Y=7/32
X-Y=47/32】
(4) X=-0.11111 Y=0.11011
[X]补=1.00001
[Y]补=0.11011
[-Y]补=1.00101
[X+Y]补=[X]补+[Y]补
= 11.00001
+ 00.11011
_______________________
11.11100
X+Y =-0.00100=-1/8
[X-Y]补=[X]补-[Y]补
= 11.00001
+ 11.00101
_________________________
10.00110 (下溢)
X-Y=0.00110=3/16 (下溢)
[ 修正 6/32-2=58/32 =29/16 ]
检验
【X=-31/32 Y=27/32
X+Y=-4/32 =-1/8
X-Y=58/32=29/16】
(5) X=-0.11011 Y=0.10100
[X]补=1.00101
[Y]补=0.10100
[-Y]补=1.01100
[X+Y]补=[X]补+[Y]补
= 11.00101
+ 00.10100
_______________________
11.11011
X+Y =-0.00111=-7/32
[X-Y]补=[X]补-[Y]补
= 11.00101
+ 11.01100
_________________________
10.10001 (下溢)
X-Y=17/32 (下溢)
[ 修正 17/32-2=-47/32 ]
检验
【X=-27/32 Y=20/32
X+Y=-7/32
X-Y=-47/32】
(6) X=-0.11010 Y=-0.11001
[X]补=1.00110
[Y]补=1.00111
[-Y]补=0.11001
[X+Y]补=[X]补+[Y]补
= 11.00110
+ 11.00111
_______________________
10.01101
X+Y =13/32 (下溢) [ 修正 13/32-2=-51/32 ]
[X-Y]补=[X]补-[Y]补
= 11.00110
+ 00.11001
_________________________
11.11111
X-Y=-0.00001
= -1/32
检验
【X=-26/32 Y=-25/32
X+Y=-51/32
X-Y=-1/32】
(7) X=-1011101 Y=+1101101
[X]补=10100011
[Y]补=01101101
[-Y]补=1.01100
[X+Y]补=[X]补+[Y]补
= 110100011
+ 001101101
_______________________
000010000
X+Y =00010000=16
[X-Y]补=[X]补-[Y]补
= 110100011
+ 110010011
_________________________
100110110 (下溢)
X-Y=54 (下溢)
[ 修正 54-256=-202 ]
检验
【X=-93 Y=109
X+Y=16
X-Y=-202】
(8) X=+1110110 Y=-1001101
[X]补=01110110
[Y]补=10110011
[-Y]补=01001101
[X+Y]补=[X]补+[Y]补
= 001110110
+ 110110011
_______________________
000101001
X+Y =41
[X-Y]补=[X]补-[Y]补
= 0011101101
+ 001001101
_________________________
011000011 (上溢)
X-Y=-61 (上溢)
[ 修正 -61+256=195 ]
检验
【X=118 Y=-77
X+Y=41
X-Y=195】
(9) X=+1101110 Y=+1010101
[X]补=01101110
[Y]补=01010101
[-Y]补=10101011
[X+Y]补=[X]补+[Y]补
= 001101110
+001010101
_______________________
011000011 (上溢)
X+Y =-0111101=-61 [ 修正 -61+256=195 ]
[X-Y]补=[X]补-[Y]补
= 001101110
+ 110101011
_________________________
000011001
X-Y=25
检验
【X=110 Y=85
X+Y=195
X-Y=25】
(10) X=-1111111 Y=-1101101
[X]补=10000001
[Y]补=10010011
[-Y]补=01101101
[X+Y]补=[X]补+[Y]补
= 110000001
+ 110010100
_______________________
100010100 (下溢)
X+Y =00010100=20 [ 修正 20-256=-236 ]
[X-Y]补=[X]补-[Y]补
= 110000001
+ 001101101
_________________________
111101110
检验
【X-Y=-0010010=-18
X=-127 Y=-109
X+Y=-236
X-Y=-18】
3.3 给出x和y的二进制值,试用原码一位乘法求XY,(写出结果的二进制表示和十
进制表示,要求写出运算过程),
(1)X=+0100,Y=-0011 (2)X=+0.0101,Y=-0. 1010,
(3)X = +1001,Y =-1101 (4)X=+0.1011,Y=-0.1101
(5)X=-1010,Y=+1011 (6) X=0.1001,Y=-0.0101
(7)X=-1010,Y=+1101 (8) X=-0.0110,Y=+0.0101
(9)X=+10101,Y=-10011 (10)X=-0.10111,Y=+0.10101
解:(1)X=+0100,Y=-0011
按乘法规则,符号位Zs = Xs Ys = 0 1 = 1;
绝对值相乘如下
0 0 0 0 0 0 1 1 部分积初值
0 1 0 0 Y4=1,加上被乘数|X|
0 1 0 0 0 0 1 1 第一次部分积
0 0 1 0 0 0 0 1 右移一位
0 1 0 0 Y3=1,加加上被乘数|X|
0 1 1 0 0 0 0 1 第二次部分积
0 0 1 1 0 0 0 0 右移一位
0 0 0 0 Y2=0,加0
0 0 1 1 0 0 0 0 第三次部分积
0 0 0 1 1 0 0 0 右移一位
0 0 0 0 Y1=0, 加0
0 0 0 1 1 0 0 0 第四次部分积
0 0 0 0 1 1 0 0 右移一位得乘积
得:[Z]原 = 1 0 0 0 0 1 1 0 0
Z = - 0 0 0 0 1 1 0 0 B = - 1`2
(2)X=+0.0101,Y=-0. 1010
按乘法规则,符号位Zs = Xs Ys = 0 1 = 1;
绝对值相乘如下
0 0 0 0 1 0 1 0 部分积初值
0 0 0 0 Y3=0,加0
0 0 0 0 1 0 1 0 第一次部分积
0 0 0 0 0 1 0 1 右移一位
0 1 0 1 Y2=1,加上被乘数|X|
0 1 0 1 0 1 0 1 第二次部分积
0 0 1 0 1 0 1 0 右移一位
0 0 0 0 Y3=0,加0
0 0 1 0 1 0 1 0 第三次部分积
0 0 0 1 0 1 0 1 右移一位
0 1 0 1 Y1=1,加上被乘数|X|
0 1 1 0 0 1 0 1 第四次部分积
0 0 1 1 0 0 1 0 右移一位得乘积
得:[Z]原 = 1. 0 0 1 1 0 0 1 0
Z = - 0. 0 0 1 1 0 0 1 0 B = - 50 / 256
(3)X = +1001,Y =-1101
按乘法规则,符号位Zs = Xs Ys = 0 1 = 1;
绝对值相乘如下
0 0 0 0 1 1 0 1 部分积初值
1 0 0 1 Y4=1,加上被乘数|X|
1 0 0 1 1 1 0 1 第一次部分积
0 1 0 0 1 1 1 0 右移一位
0 0 0 0 Y3=0,加0
0 1 0 0 1 1 1 0 第二次部分积
0 0 1 0 0 1 1 1 右移一位
1 0 0 1 Y4=1,加上被乘数|X|
1 0 1 1 0 1 1 1 第三次部分积
0 1 0 1 1 0 1 1 右移一位
1 0 0 1 Y4=1,加上被乘数|X|
1 1 1 0 1 0 1 1 第四次部分积
0 1 1 1 0 1 0 1 右移一位得乘积
得:[Z]原 = 1 0 1 1 1 0 1 0 1
Z = - 0 1 1 1 0 1 0 1 B = - 117
(4)X=+0.1011,Y=-0.1101
按乘法规则,符号位Zs = Xs Ys = 0 1 = 1;
绝对值相乘如下
0 0 0 0 1 1 0 1 部分积初值
1 0 1 1 Y4=1,加上被乘数|X|
1 0 1 1 1 1 0 1 第一次部分积
0 1 0 1 1 1 1 0 右移一位
0 0 0 0 Y3=0,加0
0 1 0 1 1 1 1 0 第二次部分积
0 0 1 0 1 1 1 1 右移一位
1 0 1 1 Y2=1,加上被乘数|X|
1 1 0 1 1 1 1 1 第三次部分积
0 1 1 0 1 1 1 1 右移一位
1 0 1 1 Y1=1,加上被乘数|X|
1 0 0 0 1 1 1 1 1 第四次部分积
1 0 0 0 1 1 1 1 右移一位得乘积
得:[Z]原 = 1.10001111
Z = - 0. 10001111 B = - 143
(5)X=-1010,Y=+1011
按乘法规则,符号位Zs = Xs Ys = 1 0 = 1;
绝对值相乘如下
0 0 0 0 1 0 1 1 部分积初值
1 0 1 0 Y4=1,加上被乘数|X|
1 0 1 0 1 0 1 1 第一次部分积
0 1 0 1 0 1 0 1 右移一位
1 0 1 0 Y4=1,加上被乘数|X|
1 1 1 1 0 1 0 1 第二次部分积
0 1 1 1 1 0 1 0 右移一位
0 0 0 0 Y4=0,加0
0 1 1 1 1 0 1 0 第三次部分积
0 0 1 1 1 1 0 1 右移一位
1 0 1 0 Y4=1,加上被乘数|X|
1 1 0 1 1 1 0 1 第四次部分积
0 1 1 0 1 1 1 0 右移一位得乘积
得:[Z]原 = 1 0 1 1 0 1 1 1 0
Z = - 0 1 1 0 1 1 1 0 B = - 110
(6) X=0.1001,Y=-0.0101
按乘法规则,符号位Zs = Xs Ys = 0 1 = 1;
绝对值相乘如下
0 0 0 0 0 1 0 1 部分积初值
1 0 0 1 Y4=1,加上被乘数|X|
1 0 0 1 0 1 0 1 第一次部分积
0 1 0 0 1 0 1 0 右移一位
0 0 0 0 Y3=0,加0
0 1 0 0 1 0 1 0 第二次部分积
0 0 1 0 0 1 0 1 右移一位
1 0 0 1 Y2=1,加上被乘数|X|
1 0 1 1 0 1 0 1 第三次部分积
0 1 0 1 1 0 1 0 右移一位
0 0 0 0 Y3=0,加0
0 1 0 1 1 0 1 0 第四次部分积
0 0 1 0 1 1 0 1 右移一位得乘积
得:[Z]原 = 1. 0 0 1 0 1 1 0 1
Z = -0 . 0 0 1 0 1 1 0 1 B = - 45 /256
(7)X=-1010,Y=+1101
按乘法规则,符号位Zs = Xs Ys = 1 0 = 1;
绝对值相乘如下
0 0 0 0 1 1 0 1 部分积初值
1 0 1 0 Y4=1,加上被乘数|X|
1 0 1 0 1 1 0 1 第一次部分积
0 1 0 1 0 1 1 0 右移一位
0 0 0 0 Y3=0,加0
0 1 0 1 0 1 1 0 第二次部分积
0 0 1 0 1 0 1 1 右移一位
1 0 1 0 Y4=1,加上被乘数|X|
1 1 0 0 1 0 1 1 第三次部分积
0 1 1 0 0 1 0 1 右移一位
1 0 1 0 Y4=1,加上被乘数|X|
1 0 0 0 0 0 1 0 1 第四次部分积
1 0 0 0 0 0 1 0 右移一位得乘积
得:[Z]原 = 1 1 0 0 0 0 0 1 0
Z = - 1 0 0 0 0 0 1 0 B = - 130
(8) X=-0.0110,Y=+0.0101
按乘法规则,符号位Zs = Xs Ys = 1 0 = 1;
绝对值相乘如下
0 0 0 0 0 1 0 1 部分积初值
0 1 1 0 Y4=1,加上被乘数|X|
0 1 1 0 0 1 0 1 第一次部分积
0 0 1 1 0 0 1 0 右移一位
0 0 0 0 Y3=0,加0
0 0 1 1 0 0 1 0 第二次部分积
0 0 0 1 1 0 0 1 右移一位
0 1 1 0 Y2=1,加上被乘数|X|
0 1 1 1 1 0 0 1 第三次部分积
0 0 1 1 1 1 0 0 右移一位
0 0 0 0 Y3=0,加0
0 0 1 1 1 1 0 0 第四次部分积
0 0 0 1 1 1 1 0 右移一位得乘积
得:[Z]原 = 1. 0 0 0 1 1 1 1 0
Z = -0. 0 0 0 1 1 1 1 0 B = - 30 / 256
(9)X=+10101,Y=-10011
按乘法规则,符号位Zs = Xs Ys = 0 1 = 1;
绝对值相乘如下
0 0 0 0 0 1 0 0 1 1 部分积初值
1 0 1 0 1 Y4=1,加上被乘数|X|
1 0 1 0 1 1 0 0 1 1
0 1 0 1 0 1 1 0 0 1 右移一位
1 0 1 0 1 Y4=1,加上被乘数|X|
1 1 1 1 1 1 1 0 0 1 第二次部分积
0 1 1 1 1 1 1 1 0 0 右移一位
0 0 0 0 0 Y4=0,加0
0 1 1 1 1 1 1 1 0 0 第三次部分积
0 0 1 1 1 1 1 1 1 0 右移一位
0 0 0 0 0 Y4=0,加0
0 0 1 1 1 1 1 1 1 0 第四次部分积
0 0 0 1 1 1 1 1 1 1 右移一位
1 0 1 0 1 Y4=1,加上被乘数|X|
1 1 0 0 0 1 1 1 1 1
0 1 1 0 0 0 1 1 1 1 右移一位得乘积
得:[Z]原 = 1 0 1 1 0 0 0 1 1 1 1
Z = - 0 1 1 0 0 0 1 1 1 1 = - 399
(10)X=-0.10111,Y=+0.10101 1 0 1 1 1
按乘法规则,符号位Zs = Xs Ys = 1 0 = 1;
绝对值相乘如下
0 0 0 0 0 1 0 1 0 1 部分积初值
1 0 1 1 1 Y4=1,加上被乘数|X|
1 0 1 1 1 1 0 1 0 1
0 1 0 1 1 1 1 0 1 0 右移一位
0 0 0 0 0 Y4=0,加0
0 1 0 1 1 1 1 0 1 0 第二次部分积
0 0 1 0 1 1 1 1 0 1 右移一位
1 0 1 1 1 Y4=1,加上被乘数|X|
1 1 1 0 0 1 1 1 0 1 第三次部分积
0 1 1 1 0 0 1 1 1 0 右移一位
0 0 0 0 0 Y4=0,加0
0 1 1 1 0 0 1 1 1 0 第四次部分积
0 0 1 1 1 0 0 1 1 1 右移一位
1 0 1 1 1 Y4=1,加上被乘数|X|
1 1 1 1 0 0 0 1 1 1
0 1 1 1 1 0 0 0 1 1 右移一位得乘积
得:[Z]原 = 1. 0 1 1 1 1 0 0 0 1 1
Z = - 0 . 0 1 1 1 1 0 0 0 1 1 B = - 483 / 1024
3.4 给出x和y的二进制值,试用补码一位乘法求XY,(写出结果的二进制表示和十
进制表示,要求写出运算过程),
(1)X=+0100,Y=-0011
展开阅读全文