本帖最后由 xuyiyi 于 2010-7-24 10:51 编辑
呵呵!
你不菜,谦虚好学,下一个匠人一定是你!
移位一次,本质上是取出其中一位数据(二进制数),
相加一次,本质上是将取出的一位数据(二进制数)累加,
连续操作N次(二进制数的总位数),
最终的累加结果就是相乘值。
举个例子: 6*5, 即二进制数 110 * 101,
将 101 左移一次,取出最高位 1,
最高位是1, 累加器加一次被乘数, 即 累加器 + 110 = 110;
将 101 再左移一次,取出下一最高位 0, 同时累加器跟着左移一次, 累加器 值为 1100,
最高位是0, 累加器空操作一次(加一次0), 即 累加器 + 000 = 1100;
将 101 再左移一次,取出下一最高位 1, 同时累加器跟着左移一次, 累加器 值为 11000,
最高位是1, 累加器加一次被乘数, 即 累加器 + 110 = 11110;
最终的累加器之值 11110(二进制数), 即十进制值 30.
|