用位操作求两个数的平均值

#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
今日推荐