天天看点

C语言小程序之异或运算输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b, 使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果

输入一个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;

}