首页 > 学院 > 开发设计 > 正文

2017/02/04

2019-11-14 09:02:43
字体:
来源:转载
供稿:网友

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);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表