我需要在两个字节之间执行按位相等。这意味着例如如果我有两个字节: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 个条目)中?我怀疑你会得到很多好处,甚至可能让事情变得更糟,但你可以尝试一下。
关于c# - 按位相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2200856/