java中一个整数a除以2,是a/2效率高,还是a>>2效率高,为什么,求分析

最好给出内存分析

肯定是移位的效率高,和内存关系不大,和计算机CPU的运算部件有关。
计算机使用的是二进制编码,移位肯定很容易。这里说一下除法,事实上,整数的除法使用的是减法。例如11/2,使用一个计数器count=0,每减一次count+1。
11-2=9>0 count=1;
9 - 2=7>0 count=2;
7-2=5>0 count =3;
5-2=3>0 count=4;
3-2=1>0 count =5;
1-2=-1<0 计算完成
所以11/2=5
如果a很大的话,会运算很多次
温馨提示:答案为网友推荐,仅供参考
第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纳秒
相似回答