我需要在两个字节之间执行按位相等。这意味着,例如,如果我有两个字节:00011011 和 00011110,结果是 11111010
我看到的唯一快速方法是使用以下语句
byte a, b;//set input bytes
byte c = ~(a^b);//output bytes
但我想知道是否有更快的解决方案。在这些相等运算之后,我想屏蔽我需要的位。所以我需要使用 AND 运算。所以代码就变成了:
byte a, b;//set input bytes
byte m;//mask, intresting bits are set to 1, others to 0
byte c = (~(a^b))&m;//output bytes
是否有任何更快、更简单的方法不需要使用所有这些按位运算,因为这部分代码将被经常调用。
我怀疑是否可以通过更少的操作来完成。这看起来是最佳的。也许您可以将 ~(a^b) 存储在查找表(256*256 条目)中?我怀疑你会得到很多好处,甚至可能使事情变得更糟,但你可以尝试一下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)