2012-03-14 5 views
1

J'essaye de convertir une valeur flottante en tableau d'octets en utilisant la méthode BitConverter.GetBytes (...). Je suis tombé sur un problème intéressant. Considérez le code suivant -Observation intéressante avec BitConverter.GetBytes() dans Compact Framework

float f = 0.0; 
byte[] bytes = BitConverter.GetBytes(f); 
for (int j = 0; j < bytes.Length; j++) 
{ 
    Trace.Write(bytes [j] + " "); 
} 

La conversion ci-dessus renvoie un tableau de 4 octets que j'imprime sur la console. Cependant, j'ai remarqué que parfois la sortie de 4 octets est {0 0 0 128} au lieu de {0 0 0 0}.

Une aide?

Merci, Omky

+1

Vous avez donc découvert l'existence du zéro négatif en virgule flottante :-) :-) – xanatos

Répondre

2

Comme écrit ici http://en.wikipedia.org/wiki/Signed_zero

La norme IEEE 754 pour l'arithmétique en virgule flottante (actuellement utilisé par la plupart des ordinateurs et des langages de programmation qui prennent en charge les nombres à virgule flottante) nécessite à la fois +0 et -0

Ce que vous avez trouvé est le zéro négatif.