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

来源:互联网 发布:江宁区广电网络营业厅 编辑:程序博客网 时间:2024/05/18 02:58
#include <stdio.h>int fun(int a){int b=0;int i;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 printf_two(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("Enter a number!\n");scanf("%d",&a);b=fun(a);printf("The oringal!\n");printf_two(a);printf("The result!\n");printf_two(b);    return 0;}

0 0