Так побитовых операций в Оберонах нет применительно к INTEGER. INTEGER надо истрактовать как SET (он в КП всегда только 32-битный {0..31}), затем провести операции над множествами, потом вернуть в INTEGER. Например, and - это пересечение множеств, *:
ORD(BITS(a)*BITS(b))
or - сложение множеств, +:
ORD(BITS(a) + BITS(b))
xor - симметрическая разность, /:
ORD(BITS(a) / BITS(b))
not - дополнение множества, -:
ORD(-BITS(a))
Никаких накладных расходов эти операции не вносят, это те же побитовые операции в завуалированной форме.