2 c bit-manipulation bit bitwise-operators
如何使用位移执行乘法36?是不是只能乘以2的幂?例如:
unsigned x = 4; // binary 00000000 00000000 00000000 00001000
unsigned y = x << 3; // multiply by 8, resulting in binary 00000000 ... 00100000
Run Code Online (Sandbox Code Playgroud)
谢谢!
你不能单独通过位移乘以2的非幂.
但你可以使用加法和乘法来分解它:
x * 36 = x * (32 + 4)
= (x * 32) + (x * 4)
Run Code Online (Sandbox Code Playgroud)
由于32和4是的功率2(2^5和2^2分别地),可以执行那些作为单独的移位和添加的结果.