Функции побитовых операций в качестве аргументов принимают не числа, как можно было бы ожидать, а ASCII-символы и строки (например, букве 'а' соответствует двоичное представление '01100001'b). Аргументом может быть и двоичное представление некоторой литеры.
BITAND()res = BITAND(<строка_1>,<строка_2>[,<заполнитель>])
Результат работы функции является строкой, имеющей длину наибольшей из строк-аргументов. Выходная строка является результатом побитовой операции "И" над исходными строками. Если в аргументах присутствует параметр "заполнитель", то более короткая из входных строк дополняется литерой "заполнителя" до длины более длинной строки. По умолчанию "заполнитель" равен нулю. Примеры:
say BITAND('АВС', 'DBF') ==> @BB say BITAND('11000101'b, '11000100'b) ==> E
BITCHG()res = BITCHG(<строка>,<бит>)
Инверсия "бита" с заданным номером в заданной "строке". Нулевому биту соответствует младший бит крайне "правого" байта строки. Пример:
say BITCHG('0', 0) ==> 1 say BITCHG('a', 5) ==> A
BITCLR()res = BITCLR(<строка>,<бит>)
Сброс "бита" с заданным номером в заданной "строке". Нулевому биту соответствует младший бит крайне "правого" байта строки. Пример:
say BITCLR('5', 0) ==> 4
BITCOMP()res = BITCOMP(<строка_1>,<строка_2>[,<заполнитель>])
Результат работы функции является номером первого несовпадающего бита двух заданных строк-аргументов, либо -1, если эти строки идентичны. Если в аргументах присутствует параметр "заполнитель", то более короткая из входных строк дополняется литерой "заполнителя" до длины более длинной строки. По умолчанию "заполнитель" равен нулю. Пример:
say BITCOMP('а', 'А') ==> 5
BITOR()res = BITOR(<строка_1>,<строка_2>[,<заполнитель>])
Результат работы функции является строкой, имеющей длину наибольшей из строк-аргументов. Выходная строка является результатом побитовой операции "ИЛИ" над исходными строками. Если указан параметр "заполнитель", то более короткая из входных строк дополняется литерой "заполнителя" до длины более длинной строки. По умолчанию "заполнитель" равен нулю.
BITSET()res = BITSET(<строка>,<бит>)
Установка "бита" с заданным номером в заданной "строке". Нулевому биту соответствует младший бит крайне "правого" байта строки.
BITTST()res = BITTST(<строка>,<бит>)
Проверка "бита" с заданным номером в заданной "строке". Нулевому биту соответствует младший бит крайне "правого" байта строки. Функция возвращает булевское значение TRUE, если указанный бит установлен в единицу; в противном случае возвращается FASLE.
BITXOR()res = BITXOR(<строка_1>,<строка_2>[,<заполнитель>])
Результат работы функции является строкой, имеющей длину наибольшей из строк-аргументов. Выходная строка является результатом побитовой операции "ИСКЛЮЧАЮЩЕЕ ИЛИ" над исходными строками. Если в аргументах писутствует параметр "заполнитель", то более короткая из командных строк дополняется литерой "заполнителя" до длины более длинной строки. По умолчанию "заполнитель" равен нулю.