в виде десятичного числа или
в виде десятичного числа или символьной строки шестнадцатеричных цифр.
<lLowByte> - необязательный логический параметр, задающий при значении
.T. сдвиг младшего байта (диапазон количества сдвигов от 1 до 7), а
при значении .F. или по умолчанию сдвиг всех 16 битов слова (диапазон
количества сдвигов от 1 до 15).
Возвращаемое значение
nWORD - числовое значение слова с циклически сдвинутыми битами.
Описание
Функция позволяет осуществить циклический сдвиг влево битов
16-битового слова с числовым значением в диапазоне от 0 до 65535.
При сдвиге бит, выходящий за разрядную сетку слева, переносится в
самый правый разряд. Параметр <lLowByte> позволяет задать сдвиг только
младшего байта слова.
Примечания
. Количество сдвигов вычисляется как остаток от деления значения,
заданного параметром <nWORD2|cHexWORD2>, на число 16 при значении .F.,
или на число 8 при значении .T. параметра <lLowByte> (длина слова и
байта соответственно).
. Для выполнения циклического сдвига вправо на 1 бит следует
выполнить циклический сдвиг (влево) на 15 для слова или на 7 для
байта, а для сдвига вправо на 2 бита - на 14 и 6 соответственно, и
т.д.
Примеры
. Циклический сдвиг значения 1 влево на 3 бита и отображение его в
двоичной форме:
* 00000000 00000001 -> 00000000 00001000
? NTOC(1, 2, 16, "0"), NTOC(NUMROL(1, 3), 2, 16, "0")
. Сдвиг 8-ми младших битов значения 60000:
* 11101010 01100000 -> 11101010 10000001
NUMROL(60000, 2, .T.)
. Циклический сдвиг вправо на 2 бита:
* 00000000 00000100 -> 00000000 00000001
? NUMROL(4, 14)
. Задание количества сдвигов, превышающего 15, эквивалентно заданию
остатка от деления на 16 (33 % 16 = 1):