Jus*_*tin 1 c bitwise-operators bitwise-xor
我在纸上进行了几次测试,但似乎无法在任何地方找到确认.
假设我有几个独特的8位数字,我将它们混合在一起存储在某处.如果我那么,之后,将那些相同的数字与存储的数字一起x,我总是得到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
Run Code Online (Sandbox Code Playgroud)
我知道它并不完美,因为在合适的条件下,我可能会在那里找到一个中间0状态.但它更适合我自己用作防范将来意外移动其中一个条件的操作.