Începând cu versiunea Lua 5.3 și rafinat în 5.4, Lua include operatori nativi pe biți pentru întregi pe 64 de biți. Aceștia permit manipularea directă a flag-urilor de memorie, criptografie, parsarea pachetelor de rețea și calculul rapid al măștilor binare.
Operatorii pe biți fundamentali în Lua 5.4
local a = 0x0F -- binar: 0000 1111 (15 în zecimal)
local b = 0x33 -- binar: 0011 0011 (51 în zecimal)
-- 1. AND pe biți (&):
local si = a & b
print(string.format("AND: 0x%02X (%d)", si, si)) -- 0x03 (0000 0011)
-- 2. OR pe biți (|):
local sau = a | b
print(string.format("OR: 0x%02X (%d)", sau, sau)) -- 0x3F (0011 1111)
-- 3. XOR pe biți (~ unar sau binar):
local sauExclusiv = a ~ b
print(string.format("XOR: 0x%02X (%d)", sauExclusiv, sauExclusiv)) -- 0x3C
-- 4. Negare binară NOT (~ ca operator unar):
local negat = ~0
print("NOT pe 0 (toți biții 1):", negat) -- -1
-- 5. Deplasare la stânga (<<) și la dreapta (>>):
local val = 4 -- binar: 0000 0100
print("Deplasare stânga 2 biți (înmulțire cu 4):", val << 2) -- 16
print("Deplasare dreapta 1 bit (împărțire cu 2):", val >> 1) -- 2
Sistem de permisiuni tip UNIX implementat cu măști binare
local PERM_READ = 1 << 0 -- 1 (001)
local PERM_WRITE = 1 << 1 -- 2 (010)
local PERM_EXECUTE = 1 << 2 -- 4 (100)
-- Acordarea drepturilor de READ și WRITE:
local permisiuniUtilizator = PERM_READ | PERM_WRITE
-- Verificarea dacă utilizatorul are drept de READ:
local poateCiti = (permisiuniUtilizator & PERM_READ) ~= 0
print("Utilizatorul poate citi?", poateCiti) -- true
-- Verificarea dacă utilizatorul are drept de EXECUTE:
local poateExecuta = (permisiuniUtilizator & PERM_EXECUTE) ~= 0
print("Utilizatorul poate executa?", poateExecuta) -- false
-- Revocarea dreptului de WRITE:
permisiuniUtilizator = permisiuniUtilizator & (~PERM_WRITE)
print("Are drept de scriere după revocare?", (permisiuniUtilizator & PERM_WRITE) ~= 0) -- false
Întrebări & Exemple de Cod:
Operatori pe Biți în Lua 5.4: &, |, ~, >>, << și Măști BinareAi o nelămurire despre utilizarea comenzii
Operatori pe Biți în Lua 5.4: &, |, ~, >>, << și Măști Binaresau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.