#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int average(int a,int b) {
int aver = 0;
//相当于每一位都分成三类,第一类:1和1的时候相与,相当于求平均值,
//第二类:1和0的时候异或再右移一位,相当于求平均值
//第三类:0和0的时候,不用操作
aver=(a&b)+((a^b)>>1);
return aver;
}
int main() {
int a = 0, b = 0,aver=0;
scanf("%d %d", &a, &b);
aver = average(a, b);
printf("%d\n", aver);
system("pause");
return 0;
}
用位操作求两个数的平均值
猜你喜欢
转载自blog.csdn.net/Whitebury/article/details/89046724
今日推荐
周排行