请教C语言位运算的问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 17:16:12
比如我有一个十六位二进制数:1101 1110 0011 1010
我需要逐位进行异或运算的结果:1⊕1⊕0⊕1⊕1......
难道非得定义十六个int型变量?
把这个十六位二进制数放到一个int型变量里进行位运算可以做到不?
或者有什么变通的方法?
定义数组和定义十六个int型变量不是一回事嘛。
我想只用一个int变量呀

答案如下:
#include<stdio.h>

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<stdio.h>
#include<stdlib.h>
#define NUM 32//我这是32位的整形,你要是是16位的话,你把改成16
void main()
{
int i,num=NUM;
printf("Please insert :");
scanf("%d",&i);

while(num--)//如果你把改为wh