#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void Reverse_bits (unsigned int value )
{
int i=0;
int ret=0;
for (i=0;i<32;i++)
{
ret=ret<<1;
ret=ret | ((value>>i)&1);
}
return ret;
}
//void Reverse_bits (unsigned int value )
//{
// int i=0;
// int ret=0;
//for (i=0;i<32;i++)
// {
// ret=ret+(value>>i&1)*pow(2,31-i);
// }
// return ret;
// }
int main ( )
{
unsigned int value=0;
unsigned int sum=0;
scanf ("%d",&value);
sum=Reverse_bits(value);
printf ("%u\n",sum);
return 0;
}
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
#include <stdio.h>
int main ( )
{
int i=0;
int ret=0;
int arr[]={1,2,3,5,3,2,1};
int sz=sizeof (arr) / sizeof (arr[0]);
for (i=0;i<sz;i++)
{
ret=ret^arr[i];
}
printf ("%d\n",ret);
return 0;
}
不使用(a+b)/2,求平均值
int main ( )
{
inr a=0;
int b=0;
scanf ("%d%d",&a,&b);
printf ("%d",(a&b+(a^b>>1)));
//printf ("%d",(a+((b-a)>>1)));
// printf ("%d",((a+b)>>1));
return 0;
}