我有一个代码可以更改两组十六进制数字,然后将它们存储到一个新的无符号字符中。代码如下所示:位屏蔽异或逻辑代码
unsigned char OldSw = 0x1D;
unsigned char NewSw = 0xF0;
unsgined char ChangedSw;
ChangedSw = (OldSw^~NewSw) & ~OldSw;
所以我知道什么是:
0x1D = 0001 1101
0XF0 = 1111 0000
林困惑什么的changedSw线在做什么。我知道它会给出输出0x02,但我无法弄清楚它是如何做到的。
在纸上逐个执行操作。首先进行'NewSw'的反转,然后是XOR,然后是'OldSw'的反转,最后是AND。然后你就会知道到底发生了什么,为什么。 –
所以NewSw在反转正确后会变成0000 1111?然后异或将它带到0x0D。那么我会和那个倒立的老年人? – user081608
是的,这就是发生了什么事。 –