- 方法1:(a+b)/2,但是会存在溢出现象。
- 方法2:float c = a+(b-a)/2.0,不用创建第三个变量。
- 方法2:float c = a&b+((a^b)>>1),直接操作bite位,效率更高。
主要解释第三种方法:
a&b:相当于同一个bite位上相同的平均值,相同的平均值即为自身。
a^b:相当于同一个bite位上不相同的数之和。
>>1: 相当于除以2 ,求平均值。
float mean(int a, int b)
{
//float c = 0.0;方法2
//c = a + (b - a) / 2.0;
//return c;
return a&b + ((a^b) >> 1);方法3
}
int main()
{
int a = 7, b = 3;
printf("%d 和 %d 的平均值为 %f", a, b, mean(a, b));
system("pause");
return 0;
}