天天看點

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;

}