Ursprünglich bassiert der ENUM auf einem Set von Assemblerbefehlen, welche allerdings
"sehr" suboptimal (lahmarschig) von praktisch allen CPU-Entwicklern umgesetzt sind.
Und diese Befehle kennen nunmal ausschließlich eine Byte-Adressierung.
https://en.wikipedia.org/wiki/Bit_Test
ABER SET ist nicht gleich SET.
Genauso, wie bei den Arrays, gibt es da Unterschiede wo etwas definiert ist.
array of xyz
als Methodenparameter sind ein Sonderfall, welcher ganz anders behandelt wird.
if x in [...] then
wird als CASE vom Compiler implementiert,
aber wenn
[...]
aus einer Variable kommt, dann mit den erwähnten Assembler-Befehlen.
Konstanten sind hierbei sehr oft typisiert, womit es eigentlich "schreibgeschützte Variablen" sind, welche dann nicht inplace als CASE behandelt werden können.
Und ja, wenn man das Ganze "manuell" als Bitmasken auf einem statischen IntegerArray mit SHL SHR AND OR XOR umsetzen würde, dann gingen auch viel mehr Bits.