题目:不使用(a+b)/2这种方式,求两个数的平均值。
首先要了解 :
按位与&是保留两个数(二进制形式)同为1的部分 则求平均值不必除2(>>1即为除2)
按位异或^是保留两个数不同的部分,则需要除2才能求平均(>>1)
#include<stdio.h>
#include<stdlib.h>
int fun1(int m,int n)
{
int num=0;
num=(m&n)+((m^n)>>1);
return num;
}
int main()
{
int a;
int b;
scanf("%d%d",&a,&b);
printf("%d \n",fun1(a,b));
system("pause");
return 0;
}