Тема: Битовые операции в Lua 5.3 и 5.4
Внутри QUIK для битовых операций уже привычно использовать функции библиотеки bit:
bit.band(x,y) - побитовое И для x,y
bit.bor(x,y) - побитовое ИЛИ для x,y
bit.bxor(x,y) - побитовое исключающее ИЛИ для x,y
и т.д.
И как-то я упустил, что в Lua 5.3 появились встроенные битовые операторы:
x & y - побитовое И для x и y, аналогично bit.band
x | y - побитовое ИЛИ для x и y, аналогично bit.bor
x ~ y - побитовое исключающее ИЛИ для x и y, аналогично bit.bxor
~ x - битовая инверсия для x, аналогично bit.bnot
x >> n - битовый сдвиг x вправо на n бит, аналогично bit.rshift
x << n - битовый сдвиг x влево на n бит, аналогично bit.lshift
Возвращаемый такими операторами результат имеет тип Integer.
Операторы >> и << сдвигают значение с потерей битов (не циклически), дополняя значение нулевыми битами слева (для >>) или справа (для <<).
Теперь в версиях терминала QUIK, где доступны Lua5.3 и Lua5.4, можно пользоваться встроенными операторами вместо библиотеки bit.
Встроенные операторы покрывают не все функции библиотеки bit, но для требуемых в QUIK задач их более чем достаточно.