我们若采用:a+(b-a)/2这种方式,若一个数为负数就会出错
因此我们采用以下方法:
我们采用位运算取出两个数相同的,在取出不同的数除以2,再将两者相加。
取两个数相同的位,我们会想到采用按位&,取出两个数不同的我们会想到按位或
int main()
{
int a = 10;
int b = 20;
printf("avg:%d\n", (a&b) + ((a^b) >> 1));
system("pause");
return 0;
}

我们若采用:a+(b-a)/2这种方式,若一个数为负数就会出错
因此我们采用以下方法:
我们采用位运算取出两个数相同的,在取出不同的数除以2,再将两者相加。
取两个数相同的位,我们会想到采用按位&,取出两个数不同的我们会想到按位或
int main()
{
int a = 10;
int b = 20;
printf("avg:%d\n", (a&b) + ((a^b) >> 1));
system("pause");
return 0;
}