如何在一个字节中设置 N 个连续位,从 LSB 开始?

How to set N amount of consecutive bits in a byte, starting from LSB?

我想在一个字节中设置 N 个位(字节总是从 0 开始)并使用指针存储它。想象一下:

void SetBits(uint8_t bytesToSet, uint8_t* var) {}

我将如何实现它(使用 C)?

那N位应该设置在哪里?向左,向右?

如果你想要右边的 N 位,你的函数应该如下所示:

void SetBits(uint8_t bitsToSet, uint8_t* var)
{
    if (bitsToSet < 8)
        *var = (1 << bitsToSet) - 1;
    else {*var = 0; *var = ~(*var);}
}

例如,对于调用 SetBits(5,&a),变量 a 将保存值 0b00011111