Чтение нескольких бит из числа через маску

При помощи побитового оператора & можно прочитать равное кол-во бит, к примеру из 0xff, достать первые 4 бита, 0x0f, и последние 4 бита 0xf0:

#include <stdio.h>
#include <stdint.h>

int
main(int ac, char *av[]) {
    uint8_t a = 0x7e;
    uint8_t b = a & 0x0f;
    uint8_t c = a & 0xf0;

    (void) fprintf (stdout, "%02x %02x %02x\n", a, b, c);
    return 0;
}

7e 0e 70

Как прочитать 3, 6 или 2 бита в тот же тип uint8_t?


Ответы (1 шт):

Автор решения: MBo

Создать маску, в которой установлены нужные биты. Например, для трёх младших битов это маска 0x7, для трёх битов, идущих через один (бинарное 010101) маска 0x15

→ Ссылка