使用按位异或^运算,使得新整数的每一位等于原整数中该位左右两边两个bit位的异或结果
发布网友
发布时间:2022-05-01 18:38
我来回答
共1个回答
热心网友
时间:2023-10-23 22:58
由于没有输入输出范例,可能没有完全理解题意。这里在原数前后都加了个0,以实现“原整数中该位左右两边两个bit位的异或结果”。
#include "stdio.h"//
void main(void){
int a=100,b=0;
unsigned j,i;
printf("请输入一个整数!\nDec=");
scanf("%d",&a);
for(i=0x80000000;!(i&a);i>>=1);
for(j=i<<1,i>>=1;i;j>>=1,i>>=1)
b=2*b+(a&j || 0) ^ (a&i || 0);
printf("结果为:%X\n",b=2*b+(a&j || 0) ^ 0);
}
热心网友
时间:2023-10-23 22:58
由于没有输入输出范例,可能没有完全理解题意。这里在原数前后都加了个0,以实现“原整数中该位左右两边两个bit位的异或结果”。
#include "stdio.h"//
void main(void){
int a=100,b=0;
unsigned j,i;
printf("请输入一个整数!\nDec=");
scanf("%d",&a);
for(i=0x80000000;!(i&a);i>>=1);
for(j=i<<1,i>>=1;i;j>>=1,i>>=1)
b=2*b+(a&j || 0) ^ (a&i || 0);
printf("结果为:%X\n",b=2*b+(a&j || 0) ^ 0);
}