我想知道您在开发一种基于位执行 if/else 切换/案例的高效算法时有什么想法。我有 8 位要玩,我需要将它们分成高阶位和低位位,如下所示:
0000 1111
每一半都包含一些信息,据此可以打开位。例如,如果下半部分(1111
在这个小端机器中)实际上是 0010
,就会发生一些事情。此外,如果较高端是 1000
,则会发生其他情况。
我想右移上半部分并进行 AND
比较(比如 (x >> 4) & 8)
会很有效,但我不确定是什么对下半部分做的很聪明,因为左移和一些奇怪的数字相比似乎有点不聪明。
再次非常感谢您的见解。
最佳答案
首先,您示例中的 (x >> 4) & 8
不太正确。要将高半字节(前四位)与 n
进行比较,您需要 ((x >> 4) & 15) == n
。
要将低半字节与 n
进行比较,您只需丢失右移:(x & 15) == n
。
关于c - 基于比特选择的算法效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6020799/