我有一个有趣的问题,让我寻找一种更有效的做事方式.
假设我们有一个值(二进制)
(VALUE) 10110001
(MASK) 00110010
----------------
(AND) 00110000
Run Code Online (Sandbox Code Playgroud)
现在,我需要能够对(AND)值中设置的值中的任何位进行异或(MASK)(始终从最低位到最高位):
(RESULT) AND1(0) xor AND4(1) xor AND5(1) = 0Run Code Online (Sandbox Code Playgroud)
现在,在纸面上,这肯定很快,因为我可以看到掩码中设置了哪些位.在我看来,在程序上我需要保持正确移位MASK直到我找到一个设置位,将其与一个单独的值进行异或,并循环直到整个字节完成.
谁能想到更快的方式?我正在寻找使用最少数量的操作和存储值来实现此目的的方法.