BitRotate
Выполняет операцию циклического побитового сдвига.
Параметры
value |
Число |
shift |
[необязательный] Число битов для сдвига влево
Отрицательные числа означают сдвиг вправо. По умолчанию равно 1.
|
size |
[необязательный] Символ, указывающий число битов, участвующих в циклическом сдвиге. По умолчанию - "W" (16 битов). См. ниже. |
Параметр size:
"B" |
сдвигать биты младшего байта (8 битов) |
"W" |
сдвигать биты младшего слова (16 битов) |
"D" |
сдвигать биты двойного слова (32 битов) |
Возвращаемое значение
Успех: |
Возвращает результат указанного сдвига. |
Ошибка: |
Устанавливает значение @error, если параметр size задан неверно |
Операции над битами выполняются только для 32-битовых целых чисел..
Примечания
В качестве значений параметров функции можно использовать шестнадцатеричное представление чисел.
См. также
BitShift, BitAND, BitNOT, BitOR, BitXOR, Hex
Пример
; ротация - движение по кругу, все биты сдвигаются вправо, а последний перемещается в начало, или наоборот.
$x = BitRotate(7, 2)
; x = 28 потому что 7 с двойной ротацией преобразуется в 28
; 7 в бинарном виде 0000000000000111
; 28 в бинарном виде 0000000000011100
$y = BitRotate(14, -2)
; y = 32771 потому что 14 с двойной ротацией вправо в пределах 16 битной разрядности преобразуется в 32771
; 14 в бинарном виде 0000000000001110
; 32771 в бинарном виде 1000000000000011
$z = BitRotate(14, -2, "D")
; z = -2147483645 потому что 14 с двойной ротацией вправо в пределах 32 битной разрядности преобразуется в -2147483645
; 14 в бинарном виде 00000000000000000000000000001110
; -2147483645 в бинарном виде 10000000000000000000000000000011
MsgBox(0, 'Сообщение', $x & @LF & $y & @LF & $z)
|