1.原码的乘法:原码的乘法将符号独立出来,两个乘数的符号异或得到得数的符号,数值部分分步乘得最终的答案。
具体计算:
例x=-0.1101 y=0.1011求xy.
取x,y的符号异或得结果的符号为负。
ACC MQ X
ACC存储乘积的高位,MQ存储乘积的低位,X存储乘数。
开始时ACC全置0 MQ存储x的数值部分1101
ACC MQ:0000 1101
X:1011
MQ的最低位为1,则将X的值加上ACC的值再置于ACC中。
ACC MQ:1011 1101
ACC MQ右移一位 0101 1110
MQ的最低位为0,则不管
ACC MQ右移一位 0010 1111
MQ的最低位为1,则将X的值加上ACC的值再置于ACC中。
ACC MQ:1101 1111
ACC MQ右移一位0110 1111
MQ最低位为1,则将X的值加上ACC的值再置于ACC中。
ACC MQ:10001 1111
右移一位加上小数点为 -0.10001111.
其实可外加一个通用寄存器保存乘数的值,将MQ两用是为了节省空间。
2.补码的乘法:补码的乘法采用双符号位和辅助位计算,将MQ的最后一位后添加一位辅助位,初值为0.
原码的乘法每次加0或x,补码乘法每次要加x的补码或-x的补码或0取决于辅助位和MQ最低位的差。两补码都将符号位一起计算,其中ACC中采用双符号位,MQ中采用单符号位。
例:x=-0.1101,y=0.1011求xy
x的补码11.0011,y的补码00.1011,-x的补码00.1101
ACC MQ:00.0000 0 1011 0
辅助位-MQ最低位为-1则加-x的补码
ACC MQ:00.1101 0 1011 0
ACC MQ右移一位
ACC MQ:00.0110 1 0101 1
辅助位-MQ最后一位为0则不变
ACC MQ右移一位
ACC MQ:00.0011 0 1010 1
辅助位-MQ最后一位为1则加x的补码
ACC MQ:11 0110 0 1010 1
ACC MQ右移一位
ACC MQ:11 1011 0 0101 0
辅助位-MQ最后一位为-1则加-x的补码
ACC MQ:00 1000 0 0101 0
ACC MQ右移一位
ACC MQ:00 0100 0 0010 1
辅助位-MQ最后一位为1,则加x的补码
ACC MQ:11.0111 0 0010 1
最终MQ和ACC构成xy最终的结果
符号为ACC中的符号位
xy的补码为1.01110001
计算机组成原理第四次笔记
最新推荐文章于 2024-05-17 18:09:12 发布