Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Kann man die Bits von Reellen Typen auslesen.

  Alt 30. Mär 2024, 21:23
Einfach Single wie gewünscht nach Integer/Cardinal/LongInt/LongUInt/LongWord casten, bzw. Double nach Int64/UInt64/TLageInteger und dann beliebige Binäroperationen, wie z.B. SHR bzw. AND.
Oder in ein BitField casten, wie TIntegerSet, set of 0..31 bzw. set of 0..63 .

Oder ganz einfach, die Funktionen der Helper-Records ala Delphi-Referenz durchsuchenTSingleRec nutzen,
oder noch besser die neueren Record-Helper ala Delphi-Referenz durchsuchenTSingleHelper.
Delphi-Quellcode:
var
  F: Single;
  L: LongUInt;

i := LongInt(F);
S := Odd(i shr 31);
S := i shr 31 and $1 <> 0;
S := i and $80000000 <> 0;
S := i and (1 shl 31) <> 0;
...
Delphi-Quellcode:
var F: Single;
F := 123.456;

E := TSingleRec(F).Exp;
F := TSingleRec(F).Frac;
S := TSingleRec(F).Sign;

E := TSingleRec(F).Exponent;
M := TSingleRec(F).Mantissa;
S := TSingleRec(F).Sign;

B1 := TSingleRec(F).Bytes[0];
B2 := TSingleRec(F).Bytes[1];
...
S := TSingleRec(F).Bytes[3] and $80 <> 0;
Delphi-Quellcode:
uses SysUtils;
var F: Single;
F := 123.456;

E := F.Exp;
F := F.Frac;
S := F.Sign;

E := F.Exponent;
M := F.Mantissa;
S := F.Sign;

B1 := F.Bytes[0];
B2 := F.Bytes[1];
...
S := F.Bytes[3] and $80 <> 0;
https://en.wikipedia.org/wiki/IEEE_754
https://de.wikipedia.org/wiki/IEEE_754
$2B or not $2B

Geändert von himitsu (30. Mär 2024 um 21:56 Uhr)
  Mit Zitat antworten Zitat