Extrair mantissa e exponente de um float
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.
Eu precisava saber a lógica disso também, se fosse possível.
Valeu.
Beppe
Curtidas 0
Respostas
Beppe
06/02/2004
Muito bom material. Brigadão! :)
Acabei escrevendo isto, pra testar:
T+
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
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+
Sua ajuda anterior já tinha sido grandiosamente útil, pois precisa trabalhar com floats binariamente(conversão de e para string).
T+
GOSTEI 0
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?
ou onde encontro algum artigo sobre o assunto?
GOSTEI 0