gpt4 book ai didi

c++ - 应用基于不同掩码的位掩码

转载 作者:太空狗 更新时间:2023-10-29 20:20:54 25 4
gpt4 key购买 nike

这里有点谜题。

我有一个 4 位的序列,名为 A。它必须根据 2 个掩码进行修改:BCB 是一个掩码,告诉我们要修改 A 的哪些位,C 告诉我们要应用于 A< 的值/强>。在我的例子中,C 始终是 1111 或 0000,但我也对通用答案感兴趣。

例如,让我们开始:

A = 0000
B = 0001
C = 1111

// Then the result should be:
D = 0001

一个不那么简单的例子:

A = 0001
B = 1010
C = 1111

// Then the result should be:
D = 1011

并用不同的 C 展示:

A = 1011
B = 0010
C = 0000

// Then the result should be:
D = 1001

使用按位运算在 C++ 中完成此操作的最佳(最简洁、可读和有效)方法是什么?

最佳答案

  1. 二进制 C,可读版本:

     if (C) {
    D = A | B;
    } else {
    D = A & ~B;
    }
  2. 任意C:

    首先,我们需要将 A 的那些位设置为 1,这在两个 B 中都等于 1C

    D = A | (B & C)

    然后我们需要将这些位设置为0,这等于B中的1,并且等于0C

    D = D & ~(B & ~C)

    或者简单一点

    D = D & (~B | C) 

关于c++ - 应用基于不同掩码的位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47038531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com