【问题标题】:Bitmask use in CC中的位掩码使用
【发布时间】:2023-03-07 00:42:02
【问题描述】:

我需要从 uint8 中提取位 2、3 和 4 并将其解释为 in。

例如,如果我有 0x1A 和 0x1C 作为掩码:

0x1A 0001 1010 值

0x1c 0001 1100 掩码

如果我执行 0x1A 和 0x1C,我会得到 ​​p>

0001 1000

基数为 24,而我只需要掩码为 110 的三个位(基数为 10 的 6)

【问题讨论】:

  • 那么你有什么尝试?发生了什么?你期待什么?
  • Hm-“掩码为 110 的三个位”实际上是 两个 位。只有1s 定义了掩码。
  • 掩码为 0x1c,包含三个非零位

标签: c bitmap


【解决方案1】:

使用 bitwise shift operator >> 将值向右移动 2 位。

要么掩码,然后移位:

result = (value & 0x1C) >> 2;

或者先移位然后掩码(注意掩码也必须移位):

result = (value >> 2) & 7;

没有区别;两种方法都将转换 8 位值 a7a6a5a4a3a2a1a0 变为 00000a4 sub>a3a2.

【讨论】:

    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多