C для установки k младших бит

Для 32-битного целого числа, как я могу установить k бит низкого порядка в C?

Ответ 1

что-то вдоль линий

установите k младших бит:

while (k) {
    k--;
    num |= (1<<k);
}

Это то, что вы имели в виду?

Ответ 2

Предполагая, что вы хотите установить k младших бит 32-разрядного целого x, я считаю, что это сработает:

if( k > 0 ) {
    x |= (0xffffffffu >> (32-k))
}

Ответ 3

Чтобы установить n младшие значащие бит в k, вы можете использовать арифметику:

k |= (1 << n) - 1;

(Если n меньше или равно ваш размер int в битах.)

Ответ 4

int bitmask = 1;
for (ix = 0;  ix < k;  ++ix)
{
    C = C | bitmask;
    bitmask <<= 1;
}