使用位运算乘以 3

Using bitwise operation to multiply by 3

一个非常基本的问题让我很困惑: 编写一个产生与此相同的东西的函数:

int mult_3_div_4(int x){return (x*3)/4;}

但只使用 ! ~ & + << >> 按位运算符

除以4当然是<< 2 所以我尝试了类似的东西:

int test(int x) {return ((x<<1 + x) >> 2);}

但我似乎无法使用按位运算符找到与 x*3 匹配的任何内容

移位 << >> 的优先级低于二元运算符 + -.

所以这条线应该是...

int test(int x) {return ((x<<1) + x) >> 2;}