Реализовать функцию от аргумента a
интегрального типа, возвращающую признак того, что a
является степенью двойки: f(a) == ((\exists i \in \N \cup {0}): a == 2^i)
.
Task_1
Реализовать класс битового вектора произвольной разрядности. Необходимые методы:
- Конструктор (разрядность, массив переменных интегрального типа): нулевой разряд нулевого элемента массива соответствует нулевому разряду битвектора.
- Разрядность ().
- Установить битовое поле (смещение, битвектор).
- Установить битовое поле (смещение, разрядность, переменная интегрального типа): отдельный вариант для битовых полей малой разрядности (до 64 разрядов).
- Получить битовое поле (смещение, разрядность).
- Получить битовое поле (смещение, разрядность) в переменную интегрального типа: отдельный вариант для битовых полей малой разрядности (до 64 разрядов).
- Получить строковое представление в 16-ричном виде.
Разрядное (битовое) поле битового вектора определяется номерами позиций младшего и старшего разряда поля. Для хранения одного разряда битвектора следует использовать один бит памяти. Task_2
Реализовать функцию, для данного набора входных элементов (A)
возвращающую случайную выборку из n
элементов (n <= size_of(A))
. Все возможные выборки должны быть равновероятны. Элементы входного набора считать попарно различными.
Task_3