使用位运算乘以 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;}
一个非常基本的问题让我很困惑: 编写一个产生与此相同的东西的函数:
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;}