今天讨论了一个问题,如何不用“*”实现乘法。
int mult(int x, int y)
{
int result = 0;
while (y) //取完y所有的有效位
{
if (y & 1) //取y的最低位
{
result += x;
}
y = y >> 1; //y整体右移一位
x = x << 1; //相对论,x整体左移一位
}
return result;
}
只考虑了正数相乘,还没考虑有负数的情况。
用空补一下实现原理和负数情况