用最有效率的方法算出 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时钟周期远小于后者的乘法指令。


results matching ""

    No results matching ""