【发布时间】:2011-01-13 03:19:33
【问题描述】:
我需要在两个字节之间执行按位相等。这意味着,例如,如果我有两个字节: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
难道没有更快更简单的方法不需要使用所有这些按位运算,因为这部分代码会被非常频繁地调用。
【问题讨论】:
-
我在 Mono/C#.Net 中工作,但我认为 C 系列中任何语言的语法都是等效的,并不那么重要。
-
比位运算快吗?你真的在开玩笑吗?
-
等等。您想要比两个按位操作“更快”的东西,两个直接实现您描述的语义的操作?嗯?
-
为什么您认为您的语言的运算符 == 不够好?
-
像这样的按位运算通常非常非常快 - 您有什么证据表明您需要优化它们?
标签: c# c optimization bit-manipulation