我遇到了算法问题。
我有一个用于 IO 的字节,其中某些位可以使用称为 XorAndXor 的方法设置。该算法的工作原理如下:
newValue = (((currentValue XOR xorMask1) AND andMask) XOR xorMask2)
描述如下:
如果两个异或掩码具有相同的值,则此函数将异或掩码的位插入与掩码为 1 的位位置。其他位保持不变。
所以我对这个函数的期望是当我有以下字节时:00101101
并且我01000000
同时使用 xor-masks 和 and-mask,只有第二位设置为 1,结果为01101101
.
但是,在进行数学运算并遍历函数时,结果是00000000
.
我做错了什么或者这个功能有什么我不明白的地方?这种低级编程已经有一段时间了,所以我真的不知道这是否是一种经常使用的方法,以及为什么以及如何使用它。
让我问一个简单的问题:有没有办法有效地使用这个函数来设置(或取消设置/更改)一个位(而不是专门询问当前值)?
例如:当前值为00101101
(我不知道这个),但我只是想确保设置了第二位,所以结果必须是01101101
.
重要信息在我的文档 PDF 中,XOR 和第一个 xorMask1 之间似乎有一点空间,所以这可能是一个~
或!
其他否定符号可能存在的地方,并且很可能由于一些奇怪的编码问题而丢失。因此,我将测试该函数是否符合文档所述或函数声明所述。抓紧你的头盔,将返回结果(请鼓)....