我想写一个C代码来设置内存地址0x3803的第三位(0x4)并清除第七位(0x40),但是我不确定应该使“&”的值(0x4和0x3F), “|”完成操作:
*((char *) 0x3803) = *((char *) 0x3803) | 0x4;
*((char *) 0x3803) = *((char *) 0x3803) & 0x3F;
我只想向我的值(value)观保证,它的权利或这些值(value)观可能还有其他选择
最佳答案
为了清楚一点,您需要使用补码值AND
,即0x40
的反转,即0xBF
。您可以让编译器使用~
为您计算值。
请注意,您可以为此使用&=
和|=
:
*((char *) 0x3803) |= 0x04;
*((char *) 0x3803) &= ~0x40;