輸入一個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;
}