Ils sont totalement différents, généralement int est juste un simple complément de 2 entiers signés, tandis que float est une simple précision à virgule flottante représentation avec les 23 bits de mantisse, 8 bits d'exposant et 1 bit de signe (voir http://en.wikipedia.org/wiki/IEEE_754-2008).
+1 bien sûr, vous le savez mieux que moi ce sont juste des représentations usuelles. En effet, depuis qu'il était à l'évidence une question de noob j'ai pensé qu'il valait mieux garder les choses simples. Brinck je suis ce qui implique que le standard ne veut pas dire que ces pour être les représentations. cnicutar: Pour clarifier, le C standard ne nécessite pas la mise en œuvre utilisation de la norme IEEE-754. Brinck - il ya beaucoup de virgule flottante formats en dehors de la norme IEEE 754; à la fin du Crétacé, j'ai travaillé sur un VAX, qui a utilisé le VAX F format. La norme du langage C n'a pas de soins sur le format flottant utilisé par une mise en œuvre, il est juste de mandat de la portée et de la précision.
Ils ont différentes gammes de valeurs parce que leurs contenus sont interprétés différemment; en d'autres termes, ils ont des représentations.
Chars et les doubles sont généralement représentées comme quelque chose comme
+-+-------+------------------------+||||+-+-------+------------------------+^^^|||||+--- significand
|+-- exponent
|+---- sign bit
où vous avez 1 bit pour représenter le signe s (0 pour positif, 1 pour négatif), un certain nombre de bits pour représenter un exposant e, et les bits restants pour un significande, ou une fraction f. La valeur est représentée est s * f * 2e.
La gamme de valeurs qui peuvent être représentés est déterminé par le nombre de bits de l'exposant; plus le nombre de bits de l'exposant, l'ensemble de la gamme de valeurs possibles.
La précision (de manière informelle, la taille de l'écart entre représentable valeurs) est déterminé par le nombre de bits dans le significande. Pas toutes les valeurs à virgule flottante peuvent être représentés exactement dans un nombre donné de bits. Plus le nombre de bits que vous avez dans le significande, plus l'écart entre deux représentable valeurs.
Chaque bit dans le significande représente 1/2n, où n est le nombre de bits à compter à partir de la gauche:
Deux types de la même taille, en octets, peut avoir différentes gammes pour vous.
Par exemple, a signé int et unsigned int sont deux 4 octets, mais on a l'une de ses 32 bits réservés pour le signe, ce qui réduit la valeur maximale d'un facteur 2 par défaut. Aussi, la gamme est différent, car l'on peut être négatif. Flotte sur l'autre main, perdre de la valeur portée en faveur de l'utilisation de certains bits pour les décimales gamme.
"Décimal gamme"? "Flotteurs [...] une perte de valeur de la gamme" fait le bruit comme si le plus grand nombre représentable par un nombre à virgule flottante est plus petit que le plus grand nombre représentable par un nombre entier de la même taille, ce qui n'est absolument pas vrai.
La norme ne précise pas la taille en octets, mais il spécifie minimum les plages de divers types intégraux doivent être en mesure de tenir. Vous pouvez déduire minimum la taille en octets.
Minimum plages garanti par la norme (à partir des Types d'Entiers En C et C++"):
signedchar:-127 to 127unsignedchar:0 to 255"plain"char:-127 to 127 or 0 to 255(depends on defaultchar signedness)signedshort:-32767 to 32767unsignedshort:0 to 65535signedint:-32767 to 32767unsignedint:0 to 65535signedlong:-2147483647 to 2147483647unsignedlong:0 to 4294967295signedlonglong:-9223372036854775807 to 9223372036854775807unsignedlonglong:0 to 18446744073709551615
Réelle plate-forme spécifique à la gamme de valeurs sont trouvées dans en C ou en C++ (ou encore mieux, basé sur un modèle std::numeric_limits en tête).
float n'ont pas la même "résolution" comme un int en dépit de leur apparence similaire. int est complément de 2 alors que float est composé de 23 bits de Mantisse, 8 bits d'exposant, et 1 bit de signe.
Cela ne semble pas répondre à la question ? Comment priez donc le dire? la gamme de flotteur est en 3.4 E +/- 38 (7 chiffres) dans Visual C et int avez -2 147 483 648 à 2 147 483 647 et les deux sont de 4 octets, alors pourquoi il est si large éventail de différence et comment ? acctually c'est ce que je veux savoir OK vous avez éditée maintenant d'ajouter une phrase au sujet de la flotte, mais l'original de la réplique ne parle même pas des flotteurs. De toute évidence un certain nombre d'autres personnes ont vu l'original de la réponse avant de le modifier quand il n'en a pas la phrase au sujet de la flotte. Peu importe si, depuis que vous avez fixé. Vous voudrez peut-être prendre la plus grande partie de la pertinence des trucs sur les différentes entier tailles et gammes.
Vous sont un mélange de l' représentation d'un nombre, qui dépend de certaines règles que vous (ou quelqu'un d'autre) définit, et la façon dont vous l'utilisez pour maintenir le nombre dans l'ordinateur (octets).
Par exemple, vous pouvez utiliser un seul bit de garder un certain nombre, et de décider que 0 représente -100, et 1 représente +100. Ou que 0 représente 5 et 1 représente 1.0. Les 2 choses, les données et la signification des données, sont indépendants.
Un nombre entier est un nombre...
C'est la gamme dépend du nombre de bits (différent pour un entier signé ou non signé).
Un nombre à virgule flottante est une chose tout à fait différent.
C'est juste une convention sur la représentation d'un nombre en virgule flottante binaire...
C'est codé avec un bit de signe, l'exposant de champ, et une mantisse.
Il va vous faire comprendre ce que sont les valeurs à virgule flottante, à partir d'un point de vue binaire. Vous aurez compris que la gamme de chose...
Pour être pédant, C les types intégraux sont aussi, comme les types à virgule flottante, juste "une convention au sujet de la représentation". Aussi, vous avez une définition circulaire dans votre deuxième paragraphe!
Ils sont totalement différents, généralement
int
est juste un simple complément de 2 entiers signés, tandis quefloat
est une simple précision à virgule flottante représentation avec les 23 bits de mantisse, 8 bits d'exposant et 1 bit de signe (voir http://en.wikipedia.org/wiki/IEEE_754-2008).En effet, depuis qu'il était à l'évidence une question de noob j'ai pensé qu'il valait mieux garder les choses simples.
Brinck je suis ce qui implique que le standard ne veut pas dire que ces pour être les représentations.
cnicutar: Pour clarifier, le C standard ne nécessite pas la mise en œuvre utilisation de la norme IEEE-754.
Brinck - il ya beaucoup de virgule flottante formats en dehors de la norme IEEE 754; à la fin du Crétacé, j'ai travaillé sur un VAX, qui a utilisé le VAX F format. La norme du langage C n'a pas de soins sur le format flottant utilisé par une mise en œuvre, il est juste de mandat de la portée et de la précision.
OriginalL'auteur Paul R
Ils ont différentes gammes de valeurs parce que leurs contenus sont interprétés différemment; en d'autres termes, ils ont des représentations.
Chars et les doubles sont généralement représentées comme quelque chose comme
où vous avez 1 bit pour représenter le signe s (0 pour positif, 1 pour négatif), un certain nombre de bits pour représenter un exposant e, et les bits restants pour un significande, ou une fraction f. La valeur est représentée est s * f * 2e.
La gamme de valeurs qui peuvent être représentés est déterminé par le nombre de bits de l'exposant; plus le nombre de bits de l'exposant, l'ensemble de la gamme de valeurs possibles.
La précision (de manière informelle, la taille de l'écart entre représentable valeurs) est déterminé par le nombre de bits dans le significande. Pas toutes les valeurs à virgule flottante peuvent être représentés exactement dans un nombre donné de bits. Plus le nombre de bits que vous avez dans le significande, plus l'écart entre deux représentable valeurs.
Chaque bit dans le significande représente 1/2n, où n est le nombre de bits à compter à partir de la gauche:
Voici un lien tout le monde devrait avoir un signet: Ce Que Tout Informaticien Devriez Savoir Sur L'Arithmétique À Virgule Flottante.
OriginalL'auteur John Bode
Deux types de la même taille, en octets, peut avoir différentes gammes pour vous.
Par exemple, a signé int et unsigned int sont deux 4 octets, mais on a l'une de ses 32 bits réservés pour le signe, ce qui réduit la valeur maximale d'un facteur 2 par défaut. Aussi, la gamme est différent, car l'on peut être négatif. Flotte sur l'autre main, perdre de la valeur portée en faveur de l'utilisation de certains bits pour les décimales gamme.
"Flotteurs [...] une perte de valeur de la gamme" fait le bruit comme si le plus grand nombre représentable par un nombre à virgule flottante est plus petit que le plus grand nombre représentable par un nombre entier de la même taille, ce qui n'est absolument pas vrai.
OriginalL'auteur John Humphreys - w00te
La norme ne précise pas la taille en octets, mais il spécifie minimum les plages de divers types intégraux doivent être en mesure de tenir. Vous pouvez déduire minimum la taille en octets.
Minimum plages garanti par la norme (à partir des Types d'Entiers En C et C++"):
Réelle plate-forme spécifique à la gamme de valeurs sont trouvées dans en C ou en C++ (ou encore mieux, basé sur un modèle std::numeric_limits en tête).
Norme exige seulement que:
sizeof(short int) <= sizeof(int) <= sizeof(long int)
float
n'ont pas la même "résolution" comme unint
en dépit de leur apparence similaire.int
est complément de 2 alors quefloat
est composé de 23 bits de Mantisse, 8 bits d'exposant, et 1 bit de signe.Comment priez donc le dire?
la gamme de flotteur est en 3.4 E +/- 38 (7 chiffres) dans Visual C et int avez -2 147 483 648 à 2 147 483 647 et les deux sont de 4 octets, alors pourquoi il est si large éventail de différence et comment ? acctually c'est ce que je veux savoir
OK vous avez éditée maintenant d'ajouter une phrase au sujet de la flotte, mais l'original de la réplique ne parle même pas des flotteurs.
De toute évidence un certain nombre d'autres personnes ont vu l'original de la réponse avant de le modifier quand il n'en a pas la phrase au sujet de la flotte. Peu importe si, depuis que vous avez fixé. Vous voudrez peut-être prendre la plus grande partie de la pertinence des trucs sur les différentes entier tailles et gammes.
OriginalL'auteur
Vous sont un mélange de l' représentation d'un nombre, qui dépend de certaines règles que vous (ou quelqu'un d'autre) définit, et la façon dont vous l'utilisez pour maintenir le nombre dans l'ordinateur (octets).
Par exemple, vous pouvez utiliser un seul bit de garder un certain nombre, et de décider que
0
représente -100, et1
représente +100. Ou que0
représente 5 et1
représente 1.0. Les 2 choses, les données et la signification des données, sont indépendants.OriginalL'auteur Itamar Katz
Un nombre entier est un nombre...
C'est la gamme dépend du nombre de bits (différent pour un entier signé ou non signé).
Un nombre à virgule flottante est une chose tout à fait différent.
C'est juste une convention sur la représentation d'un nombre en virgule flottante binaire...
C'est codé avec un bit de signe, l'exposant de champ, et une mantisse.
De lire l'article suivant:
http://www.eosgarden.com/en/articles/float/
Il va vous faire comprendre ce que sont les valeurs à virgule flottante, à partir d'un point de vue binaire. Vous aurez compris que la gamme de chose...
OriginalL'auteur Macmade