[Powered by Google Translate] JORDANIE JOZWIAK: Type de coulée, dans le sens le plus simple, est un
moyen de modifier l'interprétation d'un ordinateur de certaines données par
implicitement ou explicitement, changeant son type de données.
Telles que la modification d'un int à un flotteur, ou vice versa.
Pour comprendre la conversion de type, nous avons besoin de
Commençons par les bases -
types de données eux-mêmes.
Dans les langages de programmation tels que C, toutes les variables ont une sorte
de type de données qui détermine le mode de l'ordinateur, et également
l'utilisateur, interprète cette variable.
Types de données numériques comme un int, long long, float et
double, ont tous leurs propres caractéristiques uniques et sont
utilisé pour spécifier les valeurs de différentes gammes et de précision.
Transtypage nous permet de prendre un nombre à virgule flottante comme
3,14 et obtenir la partie avant la virgule, 3 dans ce cas,
en le jetant sur un int.
Prenons un exemple tiré de la langue anglaise pour une brève
l'examen des types, et de voir comment la conversion de type peut changer
la façon dont nous interprétons un morceau de données.
Pour les données, nous allons prendre les symboles ici.
Je viens de faire référence à ces lignes soigneusement configurés comme
symboles, mais comme quelqu'un qui connaît la langue anglaise,
vous immédiatement reconnaître qu'ils sont, en fait, des lettres.
Vous implicitement compris le type de données.
En regardant cette chaîne de lettres, nous pouvons voir deux
mots différents, chacun avec sa propre signification.
Il ya le nom, le vent, comme dans les coups de vent à l'extérieur.
Et il ya le verbe, le vent, comme dans J'ai besoin de
remonter ma montre analogique.
Ceci est un exemple intéressant, parce que nous pouvons voir
comment le type que nous attribuons à nos données, que ce soit substantif ou
verbes, change la façon dont nous utilisons ces données -
comme le vent mot ou le vent.
Même si un ordinateur ne se soucient pas de la grammaire et des pièces
d'expression anglaise, le même principe de base s'applique.
Autrement dit, nous pouvons changer l'interprétation exacte de l'
les mêmes données stockées dans la mémoire par une simple coulée à une
type différent.
Voici les tailles des types les plus communs sur un 32-bit
le système d'exploitation.
Nous avons un char à 1 byte, int et float à 4 octets, un long
de long et un double de 8 octets.
Parce qu'un int occupe 4 octets, il faudra jusqu'à 32 bits
quand il est stocké dans la mémoire comme une série binaire
de zéros et de uns.
Tant que notre variable reste comme un type int, le
ordinateur sera toujours convertir les uns et de zéros de
binaire dans le numéro d'origine.
Cependant, nous pourrions théoriquement jeter ces 32
bits en une série de types booléens.
Et puis l'ordinateur ne serait plus voir un certain nombre, mais
au lieu d'une collection de zéros et de uns.
On pourrait aussi essayer de lire ces données comme une valeur numérique différente
taper, ou même comme une chaîne de quatre caractères.
Lorsque vous traitez avec des numéros de coulée, vous devez tenir compte
la précision de votre valeur sera affectée.
Gardez à l'esprit que la précision peut rester le même,
ou vous pouvez perdre en précision, mais vous ne pouvez jamais gagner en précision.
Passons en revue les trois façons les plus courantes que vous pouvez
une perte de précision.
Jetant un flotteur à un int provoque la troncature de tout
après la virgule, de sorte que vous êtes de gauche
avec le nombre entier.
Si nous prenons le x flotteur qui sera égal à 3,7, nous pouvons jeter
cette variable x de type int int en écrivant simplement dans
parenthèses.
Chaque fois que nous utilisons ce terme ici, nous allons effectivement
utiliser la valeur de trois parce que nous avons tronqué
tout après la virgule.
Nous pouvons également convertir un long long en int, qui sera
même conduire à une perte de bits d'ordre supérieur.
Un long long prend 8 octets, ou 64 bits en mémoire.
Ainsi, lorsque nous le jeter à un int qui ne dispose que de 4 octets, ou 32
bits, nous sommes essentiellement coupant tous les morceaux que
représentent les valeurs binaires plus élevés.
Vous pouvez aussi jeter un double à un flotteur, ce qui donnera
vous le flotteur le plus proche possible de la double sans
nécessairement arrondissant.
Semblable à notre long long int à la conversion, la perte de
C'est parce que la précision d'un double contient plus de données.
Un double vous permettra de stocker 53 bits significatifs,
environ 16 chiffres significatifs.
Alors qu'un flotteur ne vous permettent de stocker 24
bits significatifs, environ sept chiffres significatifs.
Dans ces deux derniers cas, il peut être utile de penser à
taper coulée que le redimensionnement d'une photo.
Lorsque vous passez d'une grande taille d'une petite taille, vous ne pouvez pas voir
les choses aussi clairement que vous avez perdu des données
sous la forme de pixels.
Conversion de type peut également causer des problèmes lorsque nous
ints jeté à flotteurs.
Depuis flotte sur une machine 32-bit seulement ont 24
bits significatifs, ils ne peuvent pas représenter avec exactitude les valeurs
plus de 2 à la puissance de 24, ou 16777217.
Maintenant, nous allons parler de cast explicite et implicite.
Conversion explicite, c'est quand nous écrivons le type entre parenthèses
devant un nom de variable.
A titre d'exemple, nous avons écrit avant int entre parenthèses avant notre
float x variables.
De cette façon, nous obtenons la valeur int, le
valeur tronquée de 3,7 -
3.
Transtypage implicite est lorsque le compilateur change automatiquement
types similaires à un type super, ou effectue une autre sorte de
coulée sans que l'utilisateur d'écrire
code supplémentaire.
Par exemple, lorsque nous ajoutons 5 et 1.1, nos valeurs ont déjà
types qui leur sont associés.
La figure 5 est un int, alors que 1.1 est un flotteur.
Afin de les ajouter, l'ordinateur lance 5 dans un flotteur,
ce qui aurait été la même chose que l'écriture 5,0 dans le
la première place.
Mais de cette façon que nous disons flotteur 5 ou 5.0, ainsi que ce qui était déjà
un flotteur, 1,1, et de là, nous pouvons ajouter ces
valeurs et obtenir la valeur 6.1.
Transtypage implicite nous permet également d'affecter des variables de
types différents les uns des autres.
On peut toujours attribuer un type moins précis dans un plus
unique précis.
Par exemple, si nous avons un x double, et un y int -
et ceux-ci pourraient avoir les valeurs que nous leur fixées à -
nous pouvons dire x est égal à y.
Parce que le double est plus précis qu'un int, afin que nous
ne perdre aucune information.
D'autre part, il ne serait pas nécessairement correct de dire
y est égal à x, car la double peut avoir une valeur plus grande que
le nombre entier.
Et si l'entier pourrait ne pas être en mesure de tenir tous les
les informations stockées dans le double.
Transtypage implicite est également utilisé dans les opérateurs de comparaison, comme
supérieur à, inférieur à, ou de l'opérateur d'égalité.
De cette façon, nous pouvons dire si 5.1 est supérieur à 5, et nous obtenons le
entraîner vrai.
Parce que 5 est un int, mais ça va être converti en un flotteur pour
être comparé au flotteur 5.1, nous dirions 5.1 est
supérieur à 5,0.
Le même est vrai de dire si 2,0 est égal à égal à 2.
Nous aimerions également obtenir vrai, parce que l'ordinateur va lancer le
entier de 2 à flotter et ensuite dire 2,0 est égale à égale 2,0,
cela est vrai.
N'oubliez pas que nous pouvons également effectuer des conversions entre entiers et les caractères,
ou des valeurs ASCII.
Chars doivent également être réduite en binaire, c'est pourquoi vous
pouvez facilement convertir entre les caractères et leurs respectives
Valeurs ASCII.
Pour en savoir plus à ce sujet, consultez notre vidéo sur l'ASCII.
Lorsque vous prenez un moment pour réfléchir à la façon dont les données est stocké,
il commence à faire beaucoup de sens.
C'est comme la différence entre l'énergie éolienne et l'énergie éolienne.
Les données sont les mêmes, mais le type ne peut changer la façon dont nous
l'interpréter.
Mon nom est Jordan Jozwiak, ce CS50.