c - 非常简单的 mask

标签 c logic bit-manipulation

在 3 个操作中,我怎样才能将一个字节转换为与此匹配的 32 位 int:

0x1fffe

我一次只能显式访问一个字节,因此我从 0xFF 开始,然后移动它。

我可以使用 4 个操作来完成,但我找不到消除一个操作的方法。

    int mask2 = 0xFF << 8;
    mask2 = mask2 | 0xFE;
    mask2 = mask2 + mask2;
    mask2 = mask2 | 0x02;

有什么想法吗?

换句话说,我需要一个掩码 0x1FFFE 以 3 个操作一次只访问一个字节,就像示例一样。

最佳答案

也许这就是您想要的...您从一个字节值 (0xff) 开始,然后使用 3 个按位 操作对其进行处理,获得 0x1fffe。

int in = 0xff;
int out = in<<9 | in<<1;

关于c - 非常简单的 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341214/

相关文章:

c++ - Apache 模块命令解析器原型(prototype)

c - 为什么 minizip 不归档大文件(大于 4 GB)

logic - 4 位加减法逻辑

c++ - 用最少/一行代码更新一维数组的多个位置

python - 在 Python 中连接两个 32 位 int 以获得 64 位长

c++ - 一个字节中的两个值

c - 返回前后指针值不同

.c 文件中的 C99 内联函数

c - 如何为位掩码创建 48 位 uint

algorithm - 0/1 背包算法的变体