我想知道你在开发一个基于位的if/else开关/案例的高效算法方面有什么想法。我有8位要玩,我需要把它们分成高阶和低阶,就像这样:
0000 1111
每半部分都包含一些信息基,在这些信息基上可以打开位。例如,如果下半部分(1111在这个小endian机器中)实际上是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/

10-11 19:33