我已经在纸上进行了几次测试,但似乎无法在任何地方找到确认。
假设我有几个唯一的 8 位数字,我将它们异或在一起并将其存储在某个地方。如果我之后,将这些相同的数字与存储的数字进行异或,我总是会得到 0 吗?
基本上我有一个条件的枚举,其中一些需要在操作发生之前得到满足。作为一个健全性检查,并确保我以后不会意外返回并破坏此代码,我正在考虑将所需的条件一起异或,然后在满足条件时将条件与该存储值异或。然后在操作发生之前,确保我们回到 0。
所以像
sanity_check = C1 ^ C3 ^ C5
...
//Condition one is met
sanity_check ^= C1
...
//Condition 3 is met
sanity_check ^= C3
...
//Condition 5 is met
sanity_check ^= C5
...
if( sanity_check == 0 )
Do operation
我知道它并非完美无缺,因为在正确的条件下,我最终可能会在某个地方处于中间 0 状态。但它更多的是供我自己使用,以防止将来意外地将这些条件之一移动到操作之下。