取两个整数的中间值
int left = 10;
int right = 15;
int mid;
mid = (left+right)/2;
上述一个简单的除以2操作,在程序猿眼中可以有多种优化:
- 如果
left
与right
很大,那么left+right
就存在溢出的可能,因此可以使用另一种表达
mid = left+(right-left)/2;
这个思路同样适用于浮点数。
- 整数除以2可以用位运算代替,计算机处理位运算的速度要比除法快很多,因此可以表示为:
mid = left+((right-left)>>1);
(注意:上述要注意的一个问题是运算优先级,位运算的优先级低于加减法,故不能将上述语句错写为mid = left+(right-left)>>1
)
网友评论