花褪残红青杏小。燕子飞时,绿水人家绕。

求平均值,你会吗?

菜鸟编程 十五楼的鸟儿 23827浏览 0评论
二个整型数求其平均值,这个问题有人说,小学生都会. c=(a+b)/2

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

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

来看一下下面的代码.轻松解决了这个问题.
[code=cplusplus]
int average(int x, int y) //返回X,Y 的平均值
{
return (x&y)+((x^y)>>1);
}
[/code]
不信你可以试一下.看看正确吗?


转载请注明:鸟儿博客 » 求平均值,你会吗?

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址