Extrair mantissa e exponente de um float

Delphi

06/02/2004

Como faço pra extrair os componentes mantissa e exponente de um número flutuante?
Eu precisava saber a lógica disso também, se fosse possível.

Valeu.


Beppe

Beppe

Curtidas 0

Respostas

Beppe

Beppe

06/02/2004

Muito bom material. Brigadão! :)

Acabei escrevendo isto, pra testar:
procedure DissectSingle(Value: Single; out Mantissa, Exponent: Cardinal;
  out Signed: Boolean);
const
  TwentyThreeOnes = 8388607;
  EightOnes = 255;
var
  Bytes: Cardinal absolute Value;
begin
  Mantissa := Bytes and TwentyThreeOnes;
  Bytes := Bytes shr 23;
  Exponent := Bytes and EightOnes;
  Bytes := Bytes shr 8;
  Signed := Bytes <> 0;
end;

function BuildSingle(Mantissa, Exponent: Cardinal; Signed: Boolean): Single;
var
  Bytes: Cardinal absolute Result;
begin
  Bytes := Cardinal(Signed) shl 31 or Exponent shl 23 or Mantissa;
end;


T+


GOSTEI 0
Beppe

Beppe

06/02/2004

Obrigao, nem sabia dessa rotina, parece que a única diferença dela é retornar a mantissa convertida em como ponto flutuante.

Sua ajuda anterior já tinha sido grandiosamente útil, pois precisa trabalhar com floats binariamente(conversão de e para string).

T+


GOSTEI 0
Macario

Macario

06/02/2004

se possivel alguem poderia, me dizer o que é mantissa e expoente de um float??? ..e qual a sua aplicação???

ou onde encontro algum artigo sobre o assunto?


GOSTEI 0
POSTAR