1.不使用(a+b)/2这种方式,求两个数的平均值
#include<stdio.h>
int main()
{
int a = 15;
int b = 5;
printf("%d\n", (a + b) >> 1);
system("pause");
}
右移一位相当于除以2,所以直接右移一位就可以算出(a+b)的平均值了
2.编程实现:一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
#include<stdio.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 1, 2, 3, 4 };
int i = 0;
int len = sizeof(arr) / sizeof(arr[0]);
for (i = 1; i < len; i++)
{
arr[0] = arr[0] ^ arr[i];//^异或运算符,相异为1相同为0.
}
printf("不同数字为:%d\n", arr[0]);
system("pause");
return 0;
}