1. 程式人生 > >求兩個數的平均值3種方法

求兩個數的平均值3種方法

  • 方法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;
}