20170204

    xiaoxiao2021-03-26  23

    1. 题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果

    提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;

    #include <stdio.h>

    int fun(int a) {       int i;  int b = 0;       for(i = 0;i < 32;i++)  { if(i == 0 || i == 31) { b += ((a >> i) & 1) << i; } else { b += (((a >> (i - 1)) & 1) ^ ((a >> (i + 1)) & 1)) << i; }  }  return b; } void rest(int a) { int i; int temp;     for(i = 31;i >= 0;i--) { if ((i + 1) % 4 == 0) { printf(" "); }      temp = (a >> i) & 1;    printf("%c",(temp == 1) ? '1' : '0');     } printf("\n"); } int main() { int a; int b; printf("请输入一个32位的整数a:\n"); scanf("%d",&a);     b =  fun(a); printf("The oringal is \n"); rest(a); printf("The result is \n"); rest(b);
    转载请注明原文地址: https://ju.6miu.com/read-660555.html

    最新回复(0)