Используя тип SET, как известно, можно производить различные битовые операции над целыми числами. Имея 32-битное число, нет никаких проблем производить над ним всякие манипуляции с помощью функций BITS и ORD.
Например:
## Код:
```
PROCEDURE BitwiseAnd (a, b: INTEGER): INTEGER;
   VAR x, y: SET;
BEGIN
   x := BITS(a); y := BITS(b);
   RETURN ORD(x * y)  (* a AND b *)
END BitwiseAnd;
```


Однако, с 64-битными уже есть проблема:
## Код:
```
PROCEDURE BitwiseAndL (a, b: LONGINT): LONGINT;
   VAR x, y: SET;
BEGIN
   x := BITS(a); y := BITS(b);
   RETURN ORD(x * y)  (* a AND b *)
END BitwiseAndL;
```

ибо упираемся в ограничение 32-битного слова.

Вопрос таков: есть ли какой-нибудь простой способ произвести битовые операции над 64-битными числами, не используя магический SYSTEM?