How do you set only certain bits of a byte in C without affecting the rest?
假设我有一个像 1010XXXX 这样的字节,其中 X 值可以是任何值。我想将低四位设置为特定模式,比如 1100,而高四位不受影响。我如何在 C 语言中以最快的速度做到这一点?
一般来说:
1 | value = (value & ~mask) | (newvalue & mask); |
这适用于支持位运算符的所有类型。
您可以通过按位与设置将所有这些位设置为 0,其中 4 位设置为 0,所有其他位设置为 1(这是设置为 1 的 4 位的补码)。然后,您可以像往常一样按位或按位进行操作。
即
1 2 3 | val &= ~0xf; // Clear lower 4 bits. Note: ~0xf == 0xfffffff0 val |= lower4Bits & 0xf; // Worth anding with the 4 bits set to 1 to make sure no // other bits are set. |
n
使用按位运算符或 |当您想将字节的位从 0 更改为 1.
使用位运算符和