Observation intéressante avec BitConverter.getBytes () dans le cadre compact
-
13-12-2019 - |
Question
J'essaie de convertir une valeur de flotteur en une matrice d'octet à l'aide de la méthode BitConverter.getBytes (...).Je suis tombé sur un problème intéressant.Considérons le code suivant -
float f = 0.0;
byte[] bytes = BitConverter.GetBytes(f);
for (int j = 0; j < bytes.Length; j++)
{
Trace.Write(bytes [j] + " ");
}
Tableau de conversion au-dessus de 4 octets que je suis imprimé 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}.
Toute aide?
merci, Omky
La solution
Comme écrit ici http://en.wikipedia.org/wiki/signed_zero
La norme IEEE 754 pour l'arithmétique de point flottant (actuellement utilisée par la plupart des ordinateurs et des langages de programmation prenant en charge les numéros de points flottants) nécessite à la fois +0 et -0
Ce que vous avez trouvé est le zéro négatif.