答案如下:
#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);
}
验证通过,满足要求!
数组
放进一个数组里面然后进行运算就好了
可以 a^b就ok了
放到2个byte类型的数里异或,应该可以吧
你把数拆成2个数
b=0x10000;//1 0000 0000 0000 0000
a^=(b>>=1);
/******本人之见,只做参考*******/
/*****你说的是打印出一个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");
}
//是否还有其它的方法,我现在还不知道,只有等高手来了吧.