布斯乘法(百度百科):
对于 N 位乘数 Y,布斯算法检查其2的补码形式的最后一位和一个隐含的低位,
命名为 y[i-1] ,初始值为 0 。对于 y[i], i = 0, 1, ..., N - 1,考察 y[i] 和 y[i - 1 ]。
当这两位相同时,存放积的累加器 P 的值保持不变。当 y[i] = 0 且 y[i - 1] = 1 时,
被乘数乘以 2^i 加到 P 中。当 y[i]= 1 且 y[i - 1] = 0 时,从 P 中减去被乘数乘以
2^i 的值。算法结束后, P 中的数即为乘法结果。
该算法实现有符号数和无符号数相相乘。
#include <stdio.h>
//#define _CRT_SECURE_NO_WARNINGS
//用Visual Studio编译请加上上面这句话否则会报错(scanf函数被VS认为不够安全)
int mul(short int a, short int b)
{
int result = 0x00; //用来存放部分积以及最终结果
char current = 0x00;