小编pan*_*ryl的帖子

最快的方法是根据位掩码从值中对所有位进行异或运算?

我有一个有趣的问题,让我寻找一种更有效的做事方式.

假设我们有一个值(二进制)

(VALUE) 10110001
(MASK)  00110010
----------------
(AND)   00110000
Run Code Online (Sandbox Code Playgroud)

现在,我需要能够对(AND)值中设置的值中的任何位进行异或(MASK)(始终从最低位到最高位):

(RESULT) AND1(0) xor AND4(1) xor AND5(1) = 0
Run Code Online (Sandbox Code Playgroud)

现在,在纸面上,这肯定很快,因为我可以看到掩码中设置了哪些位.在我看来,在程序上我需要保持正确移位MASK直到我找到一个设置位,将其与一个单独的值进行异或,并循环直到整个字节完成.

谁能想到更快的方式?我正在寻找使用最少数量的操作和存储值来实现此目的的方法.

c c++ bit-manipulation xor

0
推荐指数
2
解决办法
1576
查看次数

标签 统计

bit-manipulation ×1

c ×1

c++ ×1

xor ×1