c# - 按位相等

标签 c# c optimization bit-manipulation

我需要在两个字节之间执行按位相等。这意味着例如如果我有两个字节: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/

相关文章:

c - 如何在里面工作 printf ?

optimization - 在GLSL中选择cubmap面的快速方法

c# - 如何在C# MailMessage中设置电子邮件过期时间

c# - 获取ListView项的子项相对于Form的坐标

c - 程序在重新分配时崩溃

c - 结构体中的嵌套定义

optimization - 在F#/Scala中优化相互递归的标准方法是什么?

sql - 哪个是避免 n+1 问题的最快执行方法,为什么?

c# - ASP.NET 缓存对象是否会随着对象更新自动更新?

c# - PHP 的 __call() 和 __callStatic() 函数在 C# 中等效