(x&y) + ( (x^y)>>1 )证实

对于位运算求两个数的平均值问题,(整形数据) int  average(int x,int y) { return ( (x&y) + ( (x^y)>>1 ) ); } 给出两个整数,求出结果。 刚开始看到这道题的作法就是x和y转换为二进制,而后计算出结果。在没有办法的状况下这样作也能够得出结果。 跟你想象的一点不差,这里确实有捷径。 题目中的&和^都是位运算,因此咱们有必要研究数据的对位状况。
相关文章
相关标签/搜索