1. 输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
#include <stdio.h>
#define max 1024
void exclusive_or(int num)
{
int i;
int j = 0;
int src_a[max];
int src_b[max];
for(i = 0; i < 32; i++)
{
if((unsigned int)(num & 0x80000000) == (unsigned int)0x80000000)
{
src_a[j] = 1;
}
else
{
src_a[j] = 0;
}
j++;
num = num << 1;
}
src_b[0] = src_a[0] ;
src_b[31] = src_a[31] ;
for(j = 1; j < 31; j++)
{
src_b[j] = src_a[j - 1] ^ src_a[j + 1] ;
}
printf("out new num :\n" );
for(i = 0;i < 32; i++)
{
printf("%d",src_b[i]);
}
}
int main()
{
int num;
printf("please input num:\n ");
scanf("%d",&num);
exclusive_or(num);
return 0;
}