不使用(a+b)/2这种方式,求两个数的平均值。

来源:互联网 发布:大数据研究方向 编辑:程序博客网 时间:2024/06/15 22:29
//方法一  移位
#include<stdio.h>
int mian()
{
int a = 4;
int b = 2;
int c = 0;
c = (a + b) >> 1;    //因为数据以二进制存储,所以向右移位1即表示除2, 如果a+b的值都很大则会有溢出的可能。
printf("%d\n", c);
return 0;
}

   


//方法二   做差值移位
//b - a表示a与b值中多余的部分,
//(b - a) >> 1  向右移动一位,即不用考虑a+b溢出的情况。
//#include<stdio.h>
//int main()
//{
// int a = 2;
// int b = 4;
// int c = 0;
// c = a + (b - a) >> 1;  
// printf("%d\n", c);
//}
阅读全文
0 0