第1个回答 2014-10-31
琢磨问题到这个程度,应该去学C和汇编,而不是java。
再说和 a/2等价的,应该是 a >> 1 。
如果/2是代码当中写死的,那么有可能编译器就做了优化,这个讨论没什么意义。
第2个回答 2014-10-31
当然是移位操作更快些,这个指令接近底层指令,我只知道越低层的速度越快,内存分析不会,不好意思!
第3个回答 2020-06-25
int a = Integer.MAX_VALUE;
long startTime = System.nanoTime();
int b = a >>> 1;
long endTime = System.nanoTime();
System.out.println(endTime - startTime); // 200纳秒 如果改成位移两次 是200纳秒
startTime = System.nanoTime();
int c = a /2;
endTime = System.nanoTime();
System.out.println(endTime - startTime); // 200纳秒 改成除4 是100纳秒