Abgesehen davon, ... hast Du vergessen, das Array zu dimensionieren (SetLength).
Für sowas schadet es nie, wenn man mal die Bereichsprüfung aktiviert.
{$Q+} => oder über die Projektoptionen und neuerdings auch via {$OVERFLOWCHECKS ON}
Dann wäre das fehlende SetLength sofort aufgefallen.
Und wenn du so wild rumrechnest, dann eventuell auch noch die Überlaufprüfung.
{$R+} => oder über die Projektoptionen und neuerdings auch via {$RANGECHECKS ON}
Und wegen dem "kompliziert":
Können sich auch ein paar Nachteile (Rechenfehler) ergeben, wenn man "Binäroperationen" (Auslesen der Bits für einen "Integer") über Fließkommazahlen und -Fließkommaperationen abwickelt (Extended), wo es diese gewünschten "Bits" so eigentlich nicht gibt.