Il y a deux raisons pour lesquelles vous devriez vous préoccuper des différents types de données numériques.
1. Sauvegarde de la mémoire
for(long k=0;k<=10;k++)
{
//stuff
}
Pourquoi utiliser un long alors qu'il pourrait tout aussi bien être un entier, voire un octet? Vous économiseriez en effet plusieurs octets de mémoire en procédant ainsi.
2. Les nombres à virgule flottante et les nombres entiers sont stockés différemment dans l'ordinateur
Supposons que le nombre 22 soit stocké dans un entier. L'ordinateur stocke ce nombre en mémoire en binaire sous la forme:
0000 0000 0000 0000 0000 0000 0001 0110
Si vous n'êtes pas familier avec le système de nombres binaires, cela peut être représenté en notation scientifique comme: 2 ^ 0 * 0 + 2 ^ 1 * 1 + 2 ^ 2 * 1 + 2 ^ 3 * 0 + 2 ^ 4 * 1 + 2 ^ 5 * 0 + ... + 2 ^ 30 * 0. Le dernier bit peut ou non être utilisé pour indiquer si le nombre est négatif (selon que le type de données est signé ou non).
Essentiellement, c'est juste une somme de 2 ^ (bit place) * value.
Cela change lorsque vous faites référence à des valeurs impliquant un point décimal. Supposons que vous ayez le nombre 3,75 en décimal. Ceci est appelé 11.11 en binaire. Nous pouvons représenter cela comme une notation scientifique comme 2 ^ 1 * 1 + 2 ^ 0 * 1 + 2 ^ -1 * 1 + 2 ^ -2 * 1 ou, normalisé, comme 1.111 * 2 ^ 2
Cependant, l'ordinateur ne peut pas stocker cela: il n'a pas de méthode explicite pour exprimer ce point binaire (la version du système de nombres binaires du point décimal). L'ordinateur ne peut stocker que des 1 et des 0. C'est là qu'intervient le type de données à virgule flottante.
En supposant que la taille de (float) est de 4 octets, vous disposez d'un total de 32 bits. Le premier bit est affecté au "bit de signe". Il n'y a pas de flotteurs ou doubles non signés. Les 8 bits suivants sont utilisés pour l '"exposant" et les 23 derniers bits sont utilisés comme "significande" (ou parfois appelée mantisse). En utilisant notre exemple de 3,75, notre exposant serait 2 ^ 1 et notre significande serait 1,111.
Si le premier bit est 1, le nombre est négatif. Sinon, positif. L'exposant est modifié par quelque chose appelé "le biais", donc nous ne pouvons pas simplement stocker "0000 0010" comme exposant. Le biais pour un nombre à virgule flottante simple précision est 127, et le biais pour une double précision (c'est là que le type de données double tire son nom) est 1023. Les 23 derniers bits sont réservés pour la signification. La signification est simplement les valeurs à DROITE de notre point binaire.
Notre exposant serait le biais (127) + exposant (1) ou représenté en binaire
1000 0000
Notre signification serait:
111 0000 0000 0000 0000 0000
Par conséquent, 3,75 est représenté comme suit:
0100 0000 0111 0000 0000 0000 0000 0000
Maintenant, regardons le nombre 8 représenté comme un nombre à virgule flottante et comme un nombre entier:
0100 0001 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 1000
Comment diable l'ordinateur va-t-il ajouter les versions 8.0 et 8? Ou même les multiplier!? L'ordinateur (plus précisément, les ordinateurs x86) possède différentes parties du processeur qui ajoutent des nombres à virgule flottante et des nombres entiers.