给定一个数字,我试图将(int a = 0XABCDE98)
位设置为D
。
ie在位操作之后,数字应该是6
。
我写了一个小的C程序来进行位操作,但是不知怎么的,我看不到正确的位变化。
请帮助我找出程序中可能缺少的内容。
#include<stdio.h>
int main()
{
int n = 0xABCDE98;
n |= (n & 0X0000) | 0x6000;
printf("%x\n", n);
return 0;
}
o/p - abcfe98
最佳答案
在你的代码中
n |= (n & 0X0000) | 0x6000;
是错误的,因为等于
0xABCDE98 & 0x0000 = 0
和0x0000 | 0x6000 = 0x6000
以及0xABCDE98 | 0x6000 = 0xABCFDE98
相反,你必须写信
n = (n & 0XFFF0FFF) | 0x6000;