不使用(a+b)/2这种方式,求两个数的平均值(保证不会溢出)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ljy_home/article/details/51702017
//(右移一位相当于除以2)



#include <stdio.h>
int main()
{
     int a,b;
     int avg=0;
     scanf("%d%d",&a,&b);
     avg=(a&b)+((a^b)>>1);   //a&b是在处理相同的位,(a^b)>>1是在处理不同的位
     printf("%d\n",avg);
  return 0;
}


本文出自 “追寻内心的声音” 博客,转载请与作者联系!

展开阅读全文

没有更多推荐了,返回首页