Задачи на работу с отдельными битами
В задачах множество чисел в интервале 0≤x≤65535=216
представлено последовательностью битов (двоичных разрядов),
содержащихся в массиве байтов:
unsigned char bitset[8192]; // 8192 == 65536/8
Биты в этом массиве нумеруются с нуля, внутри каждого байта —
от младшего к старшему: младший бит, т.е. число 1, имеет номер 0,
старший бит (число 128) имеет номер 7. Нумерация продолжается от
байта к байту.
Число x принадлежит множеству тогда и только тогда,
когда бит с номером x равен единице.
Последовательность битов записывается в файл
(текстовый или бинарный — как вам больше нравится)
в виде последовательности целых чисел в диапазоне 0..255
(в десятичном или 16-ричном виде, на выбор),
каждое из них представляет один байт.
Список задач
-
Инвертировать последовательность битов. Длина последовательности
65536 битов (8192 байтов).
-
Найти симметрическую разность двух множеств
(объединение минус пересечение).
Каждое из множеств представлено
последовательностью битов, длина последовательности 65536 битов
(8192 байтов).
-
Из первого множества вычесть второе.
Каждое из множеств представлено
последовательностью битов, длина последовательности 65536 битов
(8192 байтов).
-
Найти число связных подпоследовательностей, состоящих из единиц,
в последовательности битов.
Длина последовательности 65536 битов
(8192 байтов).
-
Найти число вхождений 4-битового образца, представленного
небольшим числом 0≤x≤15, в последовательность битов.
Длина последовательности 65536 битов
(8192 байтов).
-
Записать в файл последовательность небольших чисел
0≤xi≤15, i=0, 1, 2, ..., n-1,
используя по 4 бита для записи каждого числа. Число n четное.
|