求两个数的平均值3种方法

版权声明:Zhining https://blog.csdn.net/weixin_43214609/article/details/83547313
  • 方法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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43214609/article/details/83547313