Observação interessante com BitConverter.GetBytes() no Compact Framework
-
13-12-2019 - |
Pergunta
Estou tentando converter um valor flutuante em uma matriz de bytes usando o método BitConverter.GetBytes(...).Me deparei com uma questão interessante.Considere o seguinte código -
float f = 0.0;
byte[] bytes = BitConverter.GetBytes(f);
for (int j = 0; j < bytes.Length; j++)
{
Trace.Write(bytes [j] + " ");
}
A conversão acima retorna uma matriz de 4 bytes que estou imprimindo no console.No entanto, notei que às vezes a saída de 4 bytes é {0 0 0 128} em vez de {0 0 0 0}.
Qualquer ajuda?
Obrigado, Omky
Solução
Como está escrito aqui http://en.wikipedia.org/wiki/Signed_zero
O padrão IEEE 754 para aritmética de ponto flutuante (atualmente usado pela maioria dos computadores e linguagens de programação que suportam números de ponto flutuante) requer +0 e -0
O que você encontrou é o zero negativo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow