方法一:
直接求平均数:(a+b)/2;或a/2+b/2;
缺陷:整形溢出
方法二:
b+(a-b)/2;//两桶水的例子
方法三:
(a&b)+((a^b)>>1);//一个数和另一个数与的部分(a & b),在二进制序列里面就是两个数都为1的部分,即相同部分除以2,这样的话我们直接与取出来的部分就是原来两个数二进制序列相加进一后移一位的部分;而((a ^ b) >> 1)则是两个数二进制序列不同的部分,即不同部分除以2,所以可以写成((a ^ b) / 2),效果相同;两部分相加,就得到我们的平均数,可以说这个求法是非常巧了
总结:
尽量使用第二种和第三种!