1 使用位运算替换部分乘法或除法
位移操作主要适用于无符号整数,对于带符号数的位移,特别是负数,可能会导致问题,如果你需要对负数执行除法或者乘法,最好谨慎使用位移运算。
1.1 替换除法
当需要将一个数除以 2、4、8 等(即 2 的幂次)时,可以用右移运算符 (>>) 来替代除法操作。
cpp
int result = x / 2; // 用除法
int result_opt = x >> 1; // 用位移替代除法
int result = x / 4; // 用除法
int result_opt = x >> 2; // 用位移替代除法
1.2 替换乘法
当需要将一个数乘以 2、4、8 等时,可以用左移运算符 (<<) 来替代乘法操作。
cpp
int result = x * 2; // 用乘法
int result_opt = x << 1; // 用左移替代乘法
int result = x * 4; // 用乘法
int result_opt = x << 2; // 用左移替代乘法