给定一个数字,我试图将(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 = 00x0000 | 0x6000 = 0x6000以及0xABCDE98 | 0x6000 = 0xABCFDE98
相反,你必须写信
n = (n & 0XFFF0FFF) | 0x6000;

10-04 11:48