求平均值,你会吗

二个整型数求其平均值,这个问题有人说,小学生都会. c=(a+b)/2

是的.这是一个很简单的问题.程序员一定也会.可是我们在会的时候,却忘记了会溢出,因为二个整型数相加之后可能会大于int.Max

如果是这样的话,那我们按上面的公式求出来的值还会正确吗.但是我们知道它们的平均值是肯定不会溢出

 

来看一下下面的代码.轻松解决了这个问题.

int average(int x, int y)  //返回X,Y 的平均值
{   
    return (x&y)+((x^y)>>1);
}

不信你可以试一下.看看正确吗

posted @ 2008-08-06 09:21  greystar  阅读(130)  评论(0编辑  收藏  举报