方法一:
#include<stdio.h>
Int a,b,c
int main()
{
a = 10;
b = 20;
c = (a + b) / 2;
//int aver = (a + b) >> 1;
//右移一位相当于除以二
printf("c=%d\n", c);
return 0;
}
缺点:a+b有可能爆整型
方法二(解决爆整型问题)
大数减去小的数字取平均再加上小的数字
int main()
{
int a = 10;
int b = 20;
int c = a + (b - a) / 2;
//int c = a + (b - a) >> 1;
//右移一位相当于除以二
printf("c=%d\n", c);
return 0;
}
方法三:利用二进制运算求平均数:‘
总体思路也是找相同与不相同,相同加不相同除以2
即利用按位与求出相同部分的平均数,然后再用异或求出不同部分的平均数,加起来就是两个数的平均数
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = (a&b) + ((a^b) >> 1);
printf("c=%d\n", c);
return 0;
}