请教C语言位运算的问题

2024-11-29 11:01:44
推荐回答(6个)
回答1:

答案如下:
#include

void main()
{
int n;
printf("input a integer:");
scanf("%d",&n);
int result=n%2;
n=n/2;

while(n!=0)
{
result^=(n%2);
n/=2;
}

printf("the result is:%d\n",result);
}
验证通过,满足要求!

回答2:

数组
放进一个数组里面然后进行运算就好了

回答3:

可以 a^b就ok了

回答4:

放到2个byte类型的数里异或,应该可以吧
你把数拆成2个数

回答5:

b=0x10000;//1 0000 0000 0000 0000
a^=(b>>=1);

回答6:

/******本人之见,只做参考*******/

/*****你说的是打印出一个16进制数的每一位二进制吗,希望我没有理解错,更希望能帮上你******/

/*像你那样说只定义一个整形似乎有点问题吧.
你看这个程序:只有定义两个整形变量.
如果定义一个变量I时,当这个数是奇数时,可以打印到最后那一个1,
而要是是一个偶数时,最后一个1肯定打印不出来.*/
#include
#include
#define NUM 32//我这是32位的整形,你要是是16位的话,你把改成16
void main()
{
int i,num=NUM;
printf("Please insert :");
scanf("%d",&i);

while(num--)//如果你把改为while(i)的话,如前所说,最后那一个1不一定打印不出来啊
{
printf("%d ",-(i>>31));
if(num%4==0)
printf(" ");
i<<=1;
}
printf("\n");
}
//是否还有其它的方法,我现在还不知道,只有等高手来了吧.