如题,比如有 60|X=61,求x的值
另外如果把位或符号"|"换成别的,怎么求呢?
60转换成二进制: 0011 1100
61转换成二进制: 0011 1101
要使得60按位或运算变成61,X对应60的二进制上为1的位是不是1都可,最后一位一定要是1.
所以X可能的值共有16种,分别为
仅供参考,望采纳~
#include <stdio.h>
int main(void)
{
int i;
/* A|B=C A、C已知,求B */
int A=60,B,C=61;
for( i=0;i<8;i++)
{
if((A&(0x01<<i))==(C&(0x01<<i)))
{
B&=~(1<<i);
}
else
{
B|=(1<<i);
}
}
printf("B=%d\n",B);
printf("A|B=%d\n",A|B);
/* a&c=c a、c已知,求b */
int a=61,b,c=61;
for( i=0;i<8;i++)
{
if((a&(0x01<<i))==(c&(0x01<<i))&&(a&(0x01<<i))==(0x01<<i))
{
b|=(1<<i);
}
else
{
b&=~(1<<i);
}
}
printf("b=%d\n",b);
printf("a&b=%d\n",a&b);
return 0;
}