用最有效率的方法算出 2 乘以 8 等于几?
参考解答
分别考虑以下两种情况:
情况A
int i = 2 << 3;
int j = 2 * 8;
这时候两者效率相同,因为javac会做编译期优化,在编译阶段就算出了i=16,j=16
情况B
int m = 2;
int n = m << 2;
int x = 2;
int y = x * 8;
这时候移位的效率更高,因为编译后 m << 2 会采用ishl指令,而 x * 8 会采用imul指令,前者是移位指令所耗费的CPU时钟周期远小于后者的乘法指令。