早教吧 育儿知识 作业答案 考试题库 百科 知识分享

除2和右位移有什么区别假设a>=0;a>>1和a/2有区别吗?比如优先级,运行速度什么的?

题目详情
除2 和右位移 有什么区别
假设a>=0;
a>>1和a/2有区别吗?比如优先级,运行速度什么的?
▼优质解答
答案和解析
就我所知有几方面区别:
1)效率方面,移位shi比除法效率高的
2)大部分情况下,移位的结果等同于/2^n但是有一个特例,-1右移一位,还是-1,对于大部分编译器,-1/2的结果一般是0.这个主要与移位设置有关.当负数执行右移位时候,空出来的位置是填补1而不是0.
3)至于你说的优先级,除法优先级是比移位高的,例如a/b>>1实际上是先把a/b的结果右移一位.在所有优先级里,乘除优先级之后是加减,之后就是移位符.同样优先级的运算符从左到右执行(绝大部分的双目运算,除了赋值是从右到左,其他都是从左到右)
看了 除2和右位移有什么区别假设a...的网友还看了以下: