我想知道你在开发一个基于位的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/