DOUG LLYOYD: nombres hexadécimaux Donc, comme si nous avions besoin d'un autre numéro de base
droit de régime?
Eh bien, la plupart des cultures occidentales, comme vous êtes probablement familier,
utiliser la base system-- décimal 10, pour représenter des données numériques.
Nous avons les chiffres 0, 1, 2, 3, 5, 6, 7,8,9.
Et si nous avons besoin de représenter valeurs supérieures de neuf,
nous pouvons combiner ces chiffres en utilisant la notion de la valeur de position.
Donc, pour 10, nous avons un 1 chiffres suivi par un chiffre 0
et nous comprenons intuitivement que ce que nous faisons
il est nous multipliant la première par une 10,
et ensuite en ajoutant 0 à un total de 10.
Ordinateurs font quelque chose d'assez similaire, que vous êtes probablement familier,
avec la base system-- binaire 2.
La différence qu'il y ait qu'il n'y a que 2 chiffres
de travailler avec-- 0 et 1.
Et si nos valeurs de position, au lieu d'être un,
dix, cent, mille, comme ils serait dans le système décimal,
sont un, deux, quatre, huit, et ainsi de suite.
Voici la chose cependant, ces 0 et de 1, en particulier
si nous voulons être des informaticiens et nous faisons beaucoup de programmation
ou travailler avec des ordinateurs, allaient à voir beaucoup de nombres binaires.
Et ces 0 et de 1 dans les grandes chaînes peut être très difficile à analyser.
Nous ne pouvons pas simplement regarder une chaîne de 0 et de 1, et nécessairement savoir
exactement ce qu'il est.
Mais il est toujours utile de pouvoir Data Express de la même manière
le fait qu'un ordinateur.
Nous avons cette notion de système hexadécimal, qui est
base 16, à la place de la base 10 ou base 2.
Ce qui signifie que nous avons 16 chiffres de travailler avec au lieu de 10 ou 2.
Et il est beaucoup plus de manière concise pour exprimer
des informations binaires sur un système informatique, il est beaucoup plus humaine compréhensible.
Donc, nous avons les chiffres 0 à 9, puis
nous avons aussi ces supplémentaire de six digits-- un, b, c, d, e, et f, qui représentent 10,
notre notion de 10, 11, 12, 13, 14 et 15, en décimal.
Parfois, d'ailleurs, vous aurez également voir ces travers un de F que le capital A
par F, qui est la comme je tends à le faire.
Il est juste mon préféré style, mais soit est très bien,
ils représentent tous les deux assez près la même chose.
>> Alors, pourquoi est cool hexadécimal?
Pourquoi avons-nous besoin d'utiliser ce autre base supplémentaire?
Nous avons déjà 2 et 10, pourquoi avons-nous besoin de 16?
Bien 16 est une puissance de 2, et ainsi de chaque chiffre hexadécimal, 0 à f,
correspond à un unique, commande ou arrangement unique
de 4 chiffres binaires, 4 bits.
Et donc dans ce sens, nous pouvons exprimer , nombres binaires très longues, complexes
en hexadécimal dans un manière beaucoup plus concis,
sans perte d'information ou d'avoir à faire des conversions particulièrement lourde
sur ces chiffres.
>> Donc, comme je viens de le dire, chaque chiffre hexadécimal
correspond à un unique, arrangement de 4 chiffres binaires.
Ainsi, la chaîne binaire 0000 correspond au chiffre hexadécimal 0.
0110 correspond à 6 chiffres hexadécimaux.
Et 1111 correspond hexadécimal chiffres f.
Si vous êtes à la recherche au ce graphique, en particulier
si vous êtes à la recherche à la côté gauche de la carte,
vous pouvez déjà voir il ya un peu d'un problème d'ambiguïté.
Décimal 0 est à peu près indiscernable de hexadécimal 0,
à part le fait qu'il est sous une colonne qui dit hexadécimal.
>> Mais nous ne sera probablement pas toujours y avoir cette colonne.
Généralement, lorsque nous exprimons nombres en notation hexadécimale
de distinguer clairement eux de notation décimale,
nous les préfixons habituellement avec le préfixe 0x.
0x ne signifie rien dans la réalité, il est juste un indice pour nous en tant qu'êtres humains
que ce que nous sommes sur le point de voir, ou sur le point de commencer l'analyse,
est un nombre hexadécimal.
Il est évident que pour les chiffres supérieurs a, b, c, d, et f, qui correspond à 10 à 15
il est assez ambiguë qui est qui est un nombre hexadécimal.
Et en fait, toute hexadécimale nombre qui a des lettres en elle,
est probablement assez évident comme un nombre hexadécimal.
Mais, encore, pour le un souci de clarté, il est
toujours une bonne idée de préfixer chaque fois que vous
se référer à un chiffre en hexadécimal Numéro faisant précéder d'un 0x.
>> Donc, binaire, comme nous dit, a lieu valeurs.
Il ya la position des unités, un lieu de deux, un lieu de quatre, et un endroit huit.
Et décimal a également placer des valeurs, les unités, des dizaines, des centaines et des milliers
que nous puissions tous nous rappeler de l'école primaire.
Et hexadécimale est pas exception ici, vraiment.
Il a également Place valeurs, mais plutôt d'être des puissances de 2 ou puissances de 10,
ils sont puissances de 16.
>> Ainsi, nous voyons un certain nombre de ce type nous savoir assez clairement qu'il est 397, non?
Eh bien, si nous voyons un certain nombre de ce genre, nous savons que ce ne sont pas 397 plus.
Ceci est la hexadécimal Numéro trois à neuf-sept ans.
Il est pas 397, cela signifie quelque chose de différent,
parce que nous sommes en puissances de 16 que tous les de notre place les valeurs au lieu des pouvoirs
de 10.
En fait, les valeurs de position serait ici la position des unités, le lieu de seize ans,
et le lieu de deux cents cinquante-six, ce qui correspond à notre idée d'un ceux
place, des dizaines place, et une centaines place, si le nombre était de 397.
Mais depuis il est 0x 397, nous avons un lieu, ceux sixteens place,
et un lieu de deux cents cinquante-six.
Ou, un 16 à 0 la place, qui est de 1.
A 16 à la première place de puissance, 16.
A 16 carrés place, 256, et ainsi de suite, et ainsi de suite, et ainsi de suite.
Donc, ce nombre est vraiment 3 fois 16 carré, plus 9 fois 16, plus 7.
Je ne fais pas le calcul ici, mais il est pas 397, il est beaucoup, beaucoup plus grande que cela.
>> De même, nous pourrions avoir adc 0x, bien que ce est une fois 16 carré.
Ou si nous traduisons cela à notre notion des nombres décimaux, qui est 10 fois
16 carrés, en plus d fois 16 ou plus 13 fois 16.
Et ne vous inquiétez pas si vous ne l'avez pas mémorisé que d est 13, ou quelque chose comme ça,
il n'y a pas trop de ces chiffres littéraux
et il va devenir intuitive assez rapidement.
Encore une fois cela est 10 fois 16 carré, plus de 13 fois 16, plus 12 fois 1.
Adc Donc 0x.
>> Donc, comme je le disais, tous les groupe de 4 chiffres binaires
correspond à un unique chiffre hexadécimal,
et il est donc en fait vraiment facile de changer avant et en arrière
entre hexadécimal et en binaire.
Si vous avez cette longue chaîne de chiffres binaires, tout ce que vous devez faire
est de commencer les regroupant droit à gauche en tant que groupes de quatre.
Et puis, vous pouvez consolider les en nombres hexadécimaux,
sévèrement limiter le nombre de chiffres que vous avez à traiter mentalement.
Au lieu de 32 0 et de 1, comme nous le verrons dans un second,
vous pourriez être en mesure d'obtenir le bas à seulement 8 chiffres hexadécimaux, beaucoup
plus concis.
>> Les graphiques quelques diapositives BACK vous aider à comprendre cette cartographie,
même si, encore une fois vous aurez mémoriser assez rapidement.
Nous allons passer par un exemple en ce moment.
Donc, si nous avons un certain nombre de ce genre, ce vraiment grand nombre binaire,
ou ce qui semble être un grand nombre binaire.
Et la raison pour laquelle je dis cela, il est so-- simplement qu'il est un monstre, non?
Il ya tellement de 0 et de 1 là-bas.
Mais nous faisons probablement pas vraiment avoir une idée de ce que
l'ampleur de ce nombre est vraiment.
Nous ne disposons pas la moindre idée de ce qu'il correspondrait à une décimale.
Et en fait, nous allons même pas voir ce qu'il correspond au nombre décimal en ce moment.
Nous pourrions être en mesure de exprimer ceci d'une manière que
nous donnerait un peu plus d'informations à propos juste comment grand ce nombre est.
>> Allons donc à ce processus de conversion.
La première chose que nous devons à faire est de nous voulons groupe
ces chiffres en groupes sur de 4, à partir de la droite
et travaillant à gauche.
Il arrive d'être 32 chiffres ici, ce qui signifie que nous avons
une belle rupture nette de 8 groupes de 4.
Rappelez-vous que chaque groupe de 4 ici, uniquement correspond
à un chiffre hexadécimal.
Nous allons donc commencer la construction de notre nouveau Numéro de la droite, à gauche et de travail.
Eh bien ce qui est 1 101?
Eh bien, nous faisons le calcul dans notre tête, nous avons 1 dans le lieu de huit, un 1
à la place des pattes, un 0 dans les deux à deux place, et un 1 à la place des unités.
Voilà 8 Plus 4 Plus 1, que nous ne saurions que 13.
Mais nous ne serions probablement pas écrire sur 13, parce que nous travaillons avec la valeur hexadécimale.
Nous avons besoin de convertir en hexadécimal équivalent de 13, ce qui est d.
>> 0011, bien que ya un 0 dans le lieu huit, un 0 dans quatre pattes place,
un 1 à la place de deux, et un 1 à la place des unités.
Voilà 3.
Je veux dire continuer à faire ça encore une fois, nous avons ici 9.
Et puis 11, mais qui est b, rappel.
2, 10-- ou a-- 6, et 4.
Et pour que très grande chaîne de 0 et des 1 du top
est exprimé de façon plus concise en hexadécimal comme 0x 46a2b93d.
>> Eh bien, OK, nous avons appris une nouvelle compétences cool, quel est le point?
Nous pourrions ne pas utiliser tout cela, le temps, comme nous allons voir bientôt,
nous utilisons hexadécimal assez beaucoup de programmeurs.
Pas nécessairement pour le but de faire des maths avec elle,
mais parce qu'un grand nombre de fois des adresses de mémoire dans le système
sont représentés en hexadécimal.
Il est un moyen très concise d'exprimer autrement, la lourdeur des nombres binaires.
Et donc, encore une fois, vous pouvez pas-- vous êtes probablement
ne va pas faire toute mathématiques avec elle, vous n'êtes pas
va être multiplier nombres hexadécimaux ensemble,
ou de faire quelque chose de bizarre comme ça.
Mais il est une compétence utile d'avoir de sorte que vous pouvez exprimer et comprendre
des adresses mémoire, et d'autres façons d'utiliser les données en C.
>> Je suis Doug Lloyd, cela est CS50.