- 在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
#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;
}
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;
}
int main ( )
{
inr a=0;
int b=0;
scanf ("%d%d",&a,&b);
printf ("%d",(a&b+(a^b>>1)));
return 0;
}