Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
23. Jul 2020
Jupp, mit einem Vorzeichenbit wäre es ein Wert weniger, da die 0 doppelt ist.
PS: Siehe Fließkommazahlen IEEE-754
https://de.wikipedia.org/wiki/Zweierkomplement
https://de.wikipedia.org/wiki/IEEE_754
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
22. Jul 2020
Jetzt könnte man sich natürlich fragen, warum es THash.ToBigEndian nicht als Word gibt. :stupid:
und gerade in THash hätte ich nicht nach sowas gesucht ... eher in den Helpern der ordinalen Typen.
Jupp, wenn ich im CodeInsight das Integer sehe, denkt man zu schnell, dass das Delphi-Swap die Kapselung des Assembler-BSWAP ist und das dreht sowohl bei Word, also auch Integer alle Bytes um,...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
22. Jul 2020
Wer liest denn die Hilfe?
(außer sie heißt dont read me.doc)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
22. Jul 2020
TBytes ist ein gemaagter Typ, und wenn du ohne VAR und OUT arbeitest, wird/kann es in einer Kopie des Arrays weitergearbeitet.
Hier hast nur den Vorteil, dass außer bei Strings das CopyOnWrite seit Jahrzehnten im Arsch ist, drum geht das "zufällig" auch ohne VAR, so lange man kein SetLength benutzt.
Und ich hab schon immer gehofft das wird endlich mal repariert, nach über 20 Jahren. (dank der...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
22. Jul 2020
Jo, standardmäßig geht es meistens so
function SwapArray(const Arr: TBytes): TBytes; // CONST kann hier nicht schaden, weil den Input willst ja eh nicht verändern.
oder
procedure SwapArray(var Arr: TBytes);
oder
procedure SwapArray(const InArr: TBytes; var OutArr: TBytes); // oder OUT statt VAR
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
22. Jul 2020
Wenn du im Delphi/Pascal/C++/... einen Cast machst, dann kümmert sich der Compiler darum.
Wie der Typ im Speicher liegt, kann dir hierbei vollkommen egal sein, außer du Pointerst wild rum und willst es selbst machen, dann mußt du es natürlich beachten.
Mathematisch auf Bitebene, da ist es für das Zweierkomplement recht einfach.
Ob die höheren Bits (MSB) bzw. niedrigeren Bits (LSB) oben...