Блок задач

1. Базовые навыки

Темы
Сложность 5

Задача «Копирование цепочки битов»

Реализовать функцию копирования битовой цепочки:

void bitcpy(unsigned char *dst, size_t dst_ofs,
            unsigned char *src, size_t src_ofs, size_t bit_count);

src указывает на начало буфера, хранящего в себе битовую цепочку. src_ofs — номер бита в цепочке. 0-й бит — младший бит первого байта (*src), 7-й бит — старший бит первого байта, 8-й бит — младший бит второго байта (src[1]) и т.д.

dst и dst_ofs имеют тот же смысл для результирующей цепочки.

bit_count — количество копируемых битов.

Пример:

src указывает на цепочку из 16 бит: 01100110 11111101 (байты 66 fd).

dst указывает на другую цепочку из 16 бит: 00000111 00000000 (e0 00).

После вызова bitcpy(dst, 2, src, 8, 7) цепочка в dst меняется на следующую: 11110111 00000001 (f7 01).


Поведение функции должно быть протестировано с помощью assert.