c - 基于比特选择的算法效率

标签 c logic bit-shift bit

我想知道您在开发一种基于位执行 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/

相关文章:

oop - 面向对象的逻辑和数学

swift - Swift 中可变位的移位行为

java - 将数组/指针从 C 转换为 Java

c - 我们如何访问堆栈变量而不弹出它们?

c - 如何在C中中断覆盖文件时避免丢失数据

php - 我需要一种类似于测试条件的 for 循环重新评估行为的算法

c++ - 如何在 C++ 中进行反向字符复制

c - 如何在 MPI 中仅使用一个数组来组合不同宽度的子数组进行发送和接收

bit-shift - 第四为什么负 LSHIFT 会这样表现?

java - 有符号左移行为