1) je tezke definovat, co tyto operatory delaji nad defaultnim ciselnym typem, coz je v Lua double. Napriklad JavaScript (taktez s jednim typem numeric) s tim ma problemy, staci si vyzkouset v prohlizeci (adresni radek + Enter):
javascript:alert(1|2)
versus
javascript:alert(1|1.99999999999)
to druhe muze byt vysledek nejake bezne pocetni operace nad doublem, klidne i jednoduchy soucet.
2) pouziti techto operatoru je dvoji: sahani na jednotlive bity napriklad v hlavickach souboru ci protokolu - zde stejne nema smysl to delat nad doublem (viz vyse, lepsi je volat nejakou c-ckovou funkci ci pouzit patch/rozsireni) a potom bitove mnoziny (to jsou ony podminky) - zde je ovsem ve vysokourovnovem jazyku IMHO vhodnejsi pouzit skutecne bitove mnoziny, ktere nejsou omezeny na 32/64 bitu, vysledek je i citelnejsi, protoze se nemusi vytvaret nejake enum-like konstanty apod.