ПобитовыеОперации
Стд::ПобитовыеОперации Тип-одиночка
Набор методов для выполнения побитовых операций над типами Число и Байты. Побитовые операции реализованы для типов Байты и целых чисел (тип Число). Экземпляр типа Число преобразуется в битовую последовательность в дополнительном коде. Если в методе допускается передавать отрицательное Число, то оно логически представляется в дополнительном коде бесконечной длины.
Индексация битов начинается с 0. Если в побитовой операции используется экземпляр типа Байты, то байт с индексом 0 содержит самые младшие биты в двоичном представлении. Внутри байта младшим считается самый правый бит двоичного представления.
Сравнение
Ссылочное
Иерархия типа
Базовые типы: Объект, Одиночка
Методы
АрифметическийСдвигВправо
АрифметическийСдвигВправо<ТипИсточника>(
Источник: ТипИсточника,
Смещение: Число
): ТипИсточникаВыполняет арифметический сдвиг вправо на заданное количество битов. Для Источника типа Число допускаются как неотрицательные, так и отрицательные целые числа. Для Источника типа Байты освобождающиеся старшие биты получают значение старшего бита исходного байтового представления, а длина результата в байтах сохраняется. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если Смещение < 0.
Примеры
метод ПримерАрифметическогоСдвигаВправо(): Число
возврат ПобитовыеОперации.АрифметическийСдвигВправо(-0b100, 1) // знак сохраняется
;
Результат:
-2
БитоваяДлина
Возвращает минимальное количество битов, необходимое для двоичного представления Источника без ведущих сброшенных битов. Для Числа метод принимает только целые неотрицательные значения.Исключения
ИсключениеНедопустимыйАргумент - если Источник имеет тип Число и является отрицательным.
Примеры
метод ПримерБитовойДлины(): Число
возврат ПобитовыеОперации.БитоваяДлина(0b101011)
;
Результат:
6
И
И<ТипИсточника>(
Источник1: ТипИсточника,
Источник2: МассивБитов|Байты|Число
): ТипИсточникаВыполняет побитовую операцию И. Второй аргумент преобразуется к представлению первого, поэтому при разных длинах более короткое представление дополняется сброшенными старшими битами. Для числовых аргументов допускаются только целые неотрицательные значения. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если в числовой аргумент передано отрицательное Число.
Примеры
метод ПримерПобитовогоИ(): Число
возврат ПобитовыеОперации.И(0b11110000, 0b00111100)
;
Результат:
0b00110000
ИНе
ИНе<ТипИсточника>(
Источник1: ТипИсточника,
Источник2: МассивБитов|Байты|Число
): ТипИсточникаВыполняет побитовую операцию И НЕ, то есть Источник1 & ~Источник2. Второй аргумент преобразуется к представлению первого. Для числовых аргументов допускаются только целые неотрицательные значения. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если в числовой аргумент передано отрицательное Число.
Примеры
метод ПримерПобитовогоИНе(): Число
возврат ПобитовыеОперации.ИНе(0b11110000, 0b00111100)
;
Результат:
0b11000000
Или
Или<ТипИсточника>(
Источник1: ТипИсточника,
Источник2: МассивБитов|Байты|Число
): ТипИсточникаВыполняет побитовую операцию ИЛИ. Второй аргумент преобразуется к представлению первого. Для числовых аргументов допускаются только целые неотрицательные значения. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если в числовой аргумент передано отрицательное Число.
Примеры
метод ПримерПобитовогоИли(): Число
возврат ПобитовыеОперации.Или(0b11110000, 0b00111100)
;
Результат:
0b11111100
ИнвертироватьБит
ИнвертироватьБит<ТипИсточника>(
Источник: ТипИсточника,
Индекс: Число
): ТипИсточникаИнвертирует значение бита по индексу. Для Источника типа Число допускаются как неотрицательные, так и отрицательные целые числа. Для Байтов при инверсии бита за пределами текущей длины результат расширяется до необходимого количества байтов. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если Источник имеет тип Число и не является целым. ИсключениеИндексВнеГраниц - если Индекс < 0.
Примеры
метод ПримерИнвертироватьБит(): Число
возврат ПобитовыеОперации.ИнвертироватьБит(0b1010, 1) // второй бит справа меняется с 1 на 0
;
Результат:
0b1000
ИсключающееИли
ИсключающееИли<ТипИсточника>(
Источник1: ТипИсточника,
Источник2: МассивБитов|Байты|Число
): ТипИсточникаВыполняет побитовую операцию XOR. Второй аргумент преобразуется к представлению первого. Для числовых аргументов допускаются только целые неотрицательные значения. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если в числовой аргумент передано отрицательное Число.
Примеры
метод ПримерПобитовогоИсключительногоИли(): Число
возврат ПобитовыеОперации.ИсключающееИли(0b11110000, 0b00111100)
;
Результат:
0b11001100
ЛогическийСдвигВправо
Выполняет логический сдвиг вправо на заданное количество битов. Освободившиеся старшие биты становятся сброшенными. Метод поддерживается только для типа Байты. Длина результата в байтах сохраняется. Возвращает новый экземпляр типа ТипИсточника.Исключения
ИсключениеНедопустимыйАргумент - если Смещение < 0.
Примеры
метод ПримерЛогическогоСдвигаВправо(): Число
знч Байты = МассивБитов.ИзЧисла(0b10110000, 8).ВБайты()
знч Результат = ПобитовыеОперации.ЛогическийСдвигВправо(Байты, 3) // освободившиеся старшие биты становятся 0
возврат МассивБитов.ИзБайтов(Результат, 8).ВЧисло()
;
Результат:
0b00010110
Не
Не<ТипИсточника>(Источник: ТипИсточника): ТипИсточникаВыполняет побитовую операцию НЕ. Для Источника типа Число допускаются как неотрицательные, так и отрицательные целые числа. Для Источника типа Байты инвертируются все биты, длина результата в байтах сохраняется. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если Источник имеет тип Число и не является целым.
Примеры
метод ПримерПобитовогоНе(): Число
возврат ПобитовыеОперации.Не(0b1010) // для Числа результатом будет отрицательное значение
;
Результат:
-11
Получить
Проверяет значение бита по индексу. Для Источника типа Число допускаются как неотрицательные, так и отрицательные целые числа. Для отрицательных чисел используется представление в дополнительном коде.Исключения
ИсключениеНедопустимыйАргумент - если Источник имеет тип Число и не является целым. ИсключениеИндексВнеГраниц - если Индекс < 0.
Примеры
метод ПримерПолучитьБит(): Булево
возврат ПобитовыеОперации.Получить(0b1010, 1) // проверяется второй бит справа
;
Результат:
Истина
ПроверитьПоБитовойМаске
Проверяет, что все биты, установленные в Маске, также установлены в Источнике. Если размеры Источника и Маски не совпадают, более короткое представление дополняется сброшенными старшими битами.Исключения
ИсключениеНедопустимыйАргумент - если в Источник или Маску передано отрицательное Число.
Примеры
метод ПримерПроверитьПоБитовойМаске(): Булево
возврат ПобитовыеОперации.ПроверитьПоБитовойМаске(0b10110100, 0b00100100) // оба бита из маски установлены и в источнике
;
Результат:
Истина
СдвигВлево
СдвигВлево<ТипИсточника>(
Источник: ТипИсточника,
Смещение: Число
): ТипИсточникаВыполняет сдвиг влево на заданное количество битов. Для Источника типа Число допускаются как неотрицательные, так и отрицательные целые числа. Для Источника типа Байты длина результата в байтах сохраняется, а освободившиеся младшие биты становятся сброшенными. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если Смещение < 0.
Примеры
метод ПримерСдвигаВлево(): Число
возврат ПобитовыеОперации.СдвигВлево(0b101, 3)
;
Результат:
0b101000
Установить
Устанавливает значение бита по индексу. Для Источника типа Число допускаются как неотрицательные, так и отрицательные целые числа. Для Байтов при установке бита за пределами текущей длины результат расширяется до необходимого количества байтов. Возвращает новый экземпляр типа ТипИсточника.
Исключения
ИсключениеНедопустимыйАргумент - если Источник имеет тип Число и не является целым. ИсключениеИндексВнеГраниц - если Индекс < 0.
Примеры
метод ПримерУстановитьБит(): Число
возврат ПобитовыеОперации.Установить(0b1010, 0) // параметр Значение не задан, поэтому используется Истина
;
Результат:
0b1011