c - 如何在 C 中只设置一个字节的某些位而不影响其余位?

标签 c byte bitmask

假设我有一个像 1010XXXX 这样的字节,其中 X 值可以是任何值。我想将低四位设置为特定模式,比如 1100,同时不影响高四位。我怎样才能用 C 语言最快地做到这一点?

最佳答案

一般来说:

value = (value & ~mask) | (newvalue & mask);

mask 是一个值,所有要更改的位(并且只有它们)设置为 1 - 在您的情况下为 0xf。 newvalue 是一个包含这些位的新状态的值 - 所有其他位基本上都被忽略了。

这适用于支持按位运算符的所有类型。

关于c - 如何在 C 中只设置一个字节的某些位而不影响其余位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4439078/

相关文章:

c - 加载二进制文件 - realloc() : invalid next size

c - scanf 不断被跳过

java - 将 int 转换为十六进制字节值

c++ - 将位插入字节

c - 如何在 C 语言中为 STM32F2 重置处理器

c - 出于性能原因将代码推送到内核或用户空间?

c 得到整数的第 n 个字节

c++ - 使用(4 字节) `int` 表示数字和使用 4 元素无符号字符数组表示数字之间是否存在性能差异?

c - 在 C 中的位掩码中找出设置位位置的最佳方法

创建一个设置了 N 个最低有效位的掩码