Вдогонку:
SET - это множество (вроде списка) целых чисел. Размер множества - 32 элемента. Т.е. множство может содержать от 0 до 32 чисел.
Любое число входящее в множество не может быть больше 31.

Каждому числу соответсвует один бит в 32-битном слове (4 байта).
Например
s: SET;
s := {0}; (*взвели 0-ой бит, ORD(s) = 1*)
s := {5}; (*взвели 5-ый бит, ORD(s) = 32*)
s := {0, 5}; (*взвели 0-ой и 5-ый биты, ORD(s) = 33*)
s := {0, 1}; (*взвели 0-ой и 1-ый биты, ORD(s) = 3*)

Почему используется 32-битное слово? Помому-что:
1) Операции включения, пересечения и исключения множеств очень легко можно реализовать с помощью битовых операций над машинным словом;
2) На большинстве современных ЦПУ машинное слово занимает 32 бита.
Например, для i386:
{0,1, 2} + {2,3} = {0,1,2,3} транслируется в
## Код:
```
MOV EAX, 0x7
MOV EBX, 0x6
OR   EAX, EBX
```

{0,1, 2} - {2,3} = {0,1} транслируется в
## Код:
```
MOV EAX, 0x7
MOV ECX, EAX
MOV EBX, 0x6
AND  EAX, EBX
XOR  EAX, ECX
```

{0,1, 2} * {2,3} = {2} транслируется в
## Код:
```
MOV EAX, 0x7
MOV EBX, 0x6
AND  EAX, EBX
```
