Чтение нескольких бит из числа через маску
При помощи побитового оператора & можно прочитать равное кол-во бит, к примеру из 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