输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b, 使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
#include<stdio.h>
int main()
{
int a, b;
int A[32] = {0};
int B[32] = {0};
scanf("%d",&a);
int i;
for (i = 0; i < 32; i++)//将a转为二进制
{
A[i] = a >> i & 1;
}
for (i = 1; i < 32; i++)//求二进制的b
{
B[i] = A[i-1] ^ A[i+1];
}
for (i = 31; i >= 0 ; i--)//输出二进制b
{
printf ("%d", B[i]);
}
printf("\n");
int tmp = 1;
for (i = 0; i < 32; i++)//输出十进制b
{
b += B[i] * tmp;
tmp *= 2;
}
printf("%d", b);
printf("\n");
return 0;
}