int avg=(x&y) +((x^y)>>1);
原理:
就是把x和y都分成两部分,
一部分是都为‘1’的部分,因为相同,所以直接加就行了
一部分是x为‘1’,y为‘0’的部分,以及y为’1‘,x为’0‘的部分,两部分加起来除以2,然后跟前面的相加就可以了
缺点:
算法不错,学习!不过只能得到两者和是偶数的精确值,不能得到奇数的!
int avg=(x&y) +((x^y)>>1);
原理:
就是把x和y都分成两部分,
一部分是都为‘1’的部分,因为相同,所以直接加就行了
一部分是x为‘1’,y为‘0’的部分,以及y为’1‘,x为’0‘的部分,两部分加起来除以2,然后跟前面的相加就可以了
缺点:
算法不错,学习!不过只能得到两者和是偶数的精确值,不能得到奇数的!