Achso
Aber dann komme ich nicht umhin weiter 64bit-Ganzzahlen (und größer) einzusetzen. Denn auch bei UTF-8 werden ja die Bits nicht wirklich eingespart.
Naja, aber du meintest ja eingangs, dass die meisten Dateien <4GB sind. Wenn ich mir meine Festplatte so anschaue, sind die meisten Dateien wohl auch <2GB. Insofern spart das schon Platz, weil eben nur noch für einen Teil der doppelte Speicherplatz benötigt wird.
Außerdem werden auch bei Gleitkommazahlen keine Bits "eingespart". Man erkauft sich die geringere Größe eben durch geringere Genauigkeit. Du kannst mit einer Gleitkommazahl nicht mehr Stellen speichern als mit einer Festkommazahl, nur größere Wertebereiche abdecken. In einer 32Bit-Gleitkommazahl kannst du also niemals alle Werte speichern, die in einen 64-Bit-Integer-Wert passen. Genauergesagt sogar weniger als in einem 32-Bit-Integer, da für den Exponenten ja auch noch mal Platz draufgeht. Da wäre es noch eine "genauere" Lösung einen 32-Bit-Integer zu nehmen und den Inhalt beim Anzeigen mit dem Faktor 2 zu multiplizieren. Würde nur bei kleineren Dateien stärker auffallen - dafür wären die Ungenauigkeiten bei großen Dateien mit Gleitkommazahlen noch höher.