面试题答案
一键面试#include <stdio.h>
int multiply(int a, int b) {
int result = 0;
while (b != 0) {
if (b & 1) {
result += a;
}
a <<= 1;
b >>= 1;
}
return result;
}
思路说明
- 初始化结果:将结果
result
初始化为0,这个变量将用于存储最终的乘积。 - 循环判断:通过
while
循环,当b
不为0时持续执行以下操作。 - 判断最低位:使用
b & 1
来判断b
的二进制表示的最低位是否为1。如果是1,说明a
要累加到result
中,因为这相当于在二进制乘法中,当当前位为1时,需要加上对应的a
的倍数。 - 移位操作:
a <<= 1
将a
左移一位,相当于a
乘以2。b >>= 1
将b
右移一位,用于检查下一位。 - 返回结果:循环结束后,
result
中存储的就是a
和b
的乘积,返回result
。