booth运算:
具体规则:
若最后一位与前一位是
00或者11,则部分积+0,右移一位;
若最后一位与前一位是
10,则部分积+【x】补,右移一位;
若最后一位与前一位是
01,则部分积+【-x】补,右移一位;
部分积 乘法 说明
------------------------------------------------------------------------
0.0000 0.101 1 0 初始值,乘法最低位之后添一个0
+0.1101 0 1,则+【-x】补,记住第一次不移;
-----------------------------------------------------------------------
0.1101
+0.0110 1 0.10 1 1 0 右移一位;
0.0000 1 1,则部分积+0;
-----------------------------------------------------------------------
00.0011 01 0.1 0 1 1 0 右移一位;
+11.0011 1 0,则部分积+【x】补;
------------------------------------------------------------------------
11.0110
11.1011 001 0. 1 0 1 1 0 右移一位;
+00.1101 0 1,则部分积+【-x】补;
------------------------------------------------------------------------
00.1000
00.0100 0001 0. 1 0 1 1 0 右移一位;
+11.0011 1 0,则部分积+【x】补;
------------------------------------------------------------------------
如何判断移动完毕?
观察给出的商位数是否已经被用完了,若已经用完了,则表示已经运行结束!
所以:
【x*y】补 = 11.01110001;
【x*y】原 =-00.10001111;