http://www.davdata.nl/math/floatingpoint.html
http://www.efg2.com/Lab/Mathematics/NaN.htm
http://www.efg2.com/Lab/Library/Delphi/MathInfo/index.html
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/About_Floating-Point_Arithmetic
http://rvelthuis.de/articles/articles-floats.html
IEEE standard for floating-point 754 1985 2008
https://ieeexplore.ieee.org/document/4610935/definitions?ctx=definitions
https://en.wikipedia.org/wiki/Double-precision_floating-point_format
var f:Single; pb: pbyte; pba:array[1..sizeof(Single)] of byte; ttb4,ttb3,ttb2, ttb1 : Byte; i : Integer; s:string; Lines: TStrings; begin s:=''; f := string.ToSingle(Edit1.Text); pb := addr(f); for I := 1 to SizeOf(f) do begin pba[I]:= pb^; inc(pb); end; I:=1; ttb4:= pba[SizeOf(f)]; ttb3:= pba[SizeOf(f)-1]; ttb2:= pba[SizeOf(f)-2]; ttb1:= pba[SizeOf(f)-3]; s:= s +'Sign:'+ byte(ttb4 shr 7).ToHexString+','; s:= s +',Exp:'+ byte((ttb4 shl 1) or (ttb3 shr 7)).ToHexString; s:= s+',Frac:'+ byte((ttb3 shl 1 )shr 1).ToHexString + byte(ttb2).ToHexString+ byte(ttb1).ToHexString; s:= s +',Full:'; for I := SizeOf(f) downto 1 do begin s:= s +','+ pba[I].ToHexString; end; I:=1; //32 bits (1 for the sign 8 for the exponent, and 23 for the mantissa). Memo1.Lines.Add(FormatFloat('0000000.0000000',f)); Memo1.Lines.Add(s); Memo1.Lines.Add( '[Sign:'+ f.Sign.ToString+ '][Exp:'+ word(f.Exp).ToHexString+ '][Frac:'+ f.Frac.ToHexString +']'); Memo1.Lines.Add('Exponent:'+ f.Exponent.ToHexString); Memo1.Lines.Add('Mantissa:'+ f.Mantissa.ToHexString);