原码一位乘法(计算机组成原理)

算法原理

每次将1位乘数所对应的部分积与原部分积的“累积和”相加,并移位

设置寄存器

  • 存放部分积累积和、乘积高位
  • 存放被乘数
  • 存放乘数、乘积低位

法则

乘积的数值位俩数绝对值之积;符号位 位 俩数符号位进行异或,即 p= x ⊕ y

步骤

  • 设部分积z=0
  • 乘数最低位为1 ,z+|x|;
    乘数最低位为0 ,z+0
  • 部分积和乘数同时右移1位
  • 重复上述步骤

例子

x=0.1101 ,y =0.1011,求x*y

笔算过程

在这里插入图片描述

计算机中过程

得到|x| 和 |y|

操作高位部分积低位部分积/乘数丢失部分说明
初始00.00001011
00.1101(被乘数)1011开始乘1011 中的最低位
相加00.11011011
整体右移,是包括高位和低位00.011011011
00.11011101开始乘1011 中的倒数第二位
相加01.001111011
整体右移,是包括高位和低位00.1001111011
00.0000111011开始乘1011 中的倒数第三位0
相加00.1001111011
整体右移,是包括高位和低位00.01001111011
00.11011111011开始乘1011 中的最后一个 1
相加01.00011101011
整体右移,是包括高位和低位00.100011111011

最后得到的高位+ 低位是 00.10001111
符号位有 x和y的符号位确定 ,0 异或 0 =0
最后 x*y = 0.10001111