1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: nombres hexadécimaux Donc, comme si nous avions besoin d'un autre numéro de base 3 00:00:08,510 --> 00:00:09,970 droit de régime? 4 00:00:09,970 --> 00:00:13,000 Eh bien, la plupart des cultures occidentales, comme vous êtes probablement familier, 5 00:00:13,000 --> 00:00:16,560 utiliser la base system-- décimal 10, pour représenter des données numériques. 6 00:00:16,560 --> 00:00:20,520 Nous avons les chiffres 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 Et si nous avons besoin de représenter valeurs supérieures de neuf, 8 00:00:23,890 --> 00:00:26,800 nous pouvons combiner ces chiffres en utilisant la notion de la valeur de position. 9 00:00:26,800 --> 00:00:30,115 Donc, pour 10, nous avons un 1 chiffres suivi par un chiffre 0 10 00:00:30,115 --> 00:00:32,240 et nous comprenons intuitivement que ce que nous faisons 11 00:00:32,240 --> 00:00:35,500 il est nous multipliant la première par une 10, 12 00:00:35,500 --> 00:00:37,689 et ensuite en ajoutant 0 à un total de 10. 13 00:00:37,689 --> 00:00:40,480 Ordinateurs font quelque chose d'assez similaire, que vous êtes probablement familier, 14 00:00:40,480 --> 00:00:42,409 avec la base system-- binaire 2. 15 00:00:42,409 --> 00:00:44,700 La différence qu'il y ait qu'il n'y a que 2 chiffres 16 00:00:44,700 --> 00:00:46,770 de travailler avec-- 0 et 1. 17 00:00:46,770 --> 00:00:49,033 Et si nos valeurs de position, au lieu d'être un, 18 00:00:49,033 --> 00:00:52,600 dix, cent, mille, comme ils serait dans le système décimal, 19 00:00:52,600 --> 00:00:57,690 sont un, deux, quatre, huit, et ainsi de suite. 20 00:00:57,690 --> 00:01:00,842 Voici la chose cependant, ces 0 et de 1, en particulier 21 00:01:00,842 --> 00:01:03,800 si nous voulons être des informaticiens et nous faisons beaucoup de programmation 22 00:01:03,800 --> 00:01:06,924 ou travailler avec des ordinateurs, allaient à voir beaucoup de nombres binaires. 23 00:01:06,924 --> 00:01:11,660 Et ces 0 et de 1 dans les grandes chaînes peut être très difficile à analyser. 24 00:01:11,660 --> 00:01:16,610 Nous ne pouvons pas simplement regarder une chaîne de 0 et de 1, et nécessairement savoir 25 00:01:16,610 --> 00:01:17,810 exactement ce qu'il est. 26 00:01:17,810 --> 00:01:21,980 Mais il est toujours utile de pouvoir Data Express de la même manière 27 00:01:21,980 --> 00:01:23,480 le fait qu'un ordinateur. 28 00:01:23,480 --> 00:01:26,580 Nous avons cette notion de système hexadécimal, qui est 29 00:01:26,580 --> 00:01:29,840 base 16, à la place de la base 10 ou base 2. 30 00:01:29,840 --> 00:01:34,420 Ce qui signifie que nous avons 16 chiffres de travailler avec au lieu de 10 ou 2. 31 00:01:34,420 --> 00:01:37,180 Et il est beaucoup plus de manière concise pour exprimer 32 00:01:37,180 --> 00:01:41,210 des informations binaires sur un système informatique, il est beaucoup plus humaine compréhensible. 33 00:01:41,210 --> 00:01:43,520 Donc, nous avons les chiffres 0 à 9, puis 34 00:01:43,520 --> 00:01:49,480 nous avons aussi ces supplémentaire de six digits-- un, b, c, d, e, et f, qui représentent 10, 35 00:01:49,480 --> 00:01:56,050 notre notion de 10, 11, 12, 13, 14 et 15, en décimal. 36 00:01:56,050 --> 00:01:59,787 Parfois, d'ailleurs, vous aurez également voir ces travers un de F que le capital A 37 00:01:59,787 --> 00:02:01,620 par F, qui est la comme je tends à le faire. 38 00:02:01,620 --> 00:02:04,560 Il est juste mon préféré style, mais soit est très bien, 39 00:02:04,560 --> 00:02:07,870 ils représentent tous les deux assez près la même chose. 40 00:02:07,870 --> 00:02:09,090 >> Alors, pourquoi est cool hexadécimal? 41 00:02:09,090 --> 00:02:11,580 Pourquoi avons-nous besoin d'utiliser ce autre base supplémentaire? 42 00:02:11,580 --> 00:02:14,310 Nous avons déjà 2 et 10, pourquoi avons-nous besoin de 16? 43 00:02:14,310 --> 00:02:21,650 Bien 16 est une puissance de 2, et ainsi de chaque chiffre hexadécimal, 0 à f, 44 00:02:21,650 --> 00:02:25,440 correspond à un unique, commande ou arrangement unique 45 00:02:25,440 --> 00:02:29,060 de 4 chiffres binaires, 4 bits. 46 00:02:29,060 --> 00:02:34,570 Et donc dans ce sens, nous pouvons exprimer , nombres binaires très longues, complexes 47 00:02:34,570 --> 00:02:36,440 en hexadécimal dans un manière beaucoup plus concis, 48 00:02:36,440 --> 00:02:41,080 sans perte d'information ou d'avoir à faire des conversions particulièrement lourde 49 00:02:41,080 --> 00:02:42,480 sur ces chiffres. 50 00:02:42,480 --> 00:02:44,880 >> Donc, comme je viens de le dire, chaque chiffre hexadécimal 51 00:02:44,880 --> 00:02:48,630 correspond à un unique, arrangement de 4 chiffres binaires. 52 00:02:48,630 --> 00:02:53,670 Ainsi, la chaîne binaire 0000 correspond au chiffre hexadécimal 0. 53 00:02:53,670 --> 00:03:00,340 0110 correspond à 6 chiffres hexadécimaux. 54 00:03:00,340 --> 00:03:05,225 Et 1111 correspond hexadécimal chiffres f. 55 00:03:05,225 --> 00:03:07,100 Si vous êtes à la recherche au ce graphique, en particulier 56 00:03:07,100 --> 00:03:09,099 si vous êtes à la recherche à la côté gauche de la carte, 57 00:03:09,099 --> 00:03:11,970 vous pouvez déjà voir il ya un peu d'un problème d'ambiguïté. 58 00:03:11,970 --> 00:03:15,229 Décimal 0 est à peu près indiscernable de hexadécimal 0, 59 00:03:15,229 --> 00:03:18,020 à part le fait qu'il est sous une colonne qui dit hexadécimal. 60 00:03:18,020 --> 00:03:22,130 >> Mais nous ne sera probablement pas toujours y avoir cette colonne. 61 00:03:22,130 --> 00:03:25,420 Généralement, lorsque nous exprimons nombres en notation hexadécimale 62 00:03:25,420 --> 00:03:28,130 de distinguer clairement eux de notation décimale, 63 00:03:28,130 --> 00:03:31,860 nous les préfixons habituellement avec le préfixe 0x. 64 00:03:31,860 --> 00:03:35,990 0x ne signifie rien dans la réalité, il est juste un indice pour nous en tant qu'êtres humains 65 00:03:35,990 --> 00:03:39,190 que ce que nous sommes sur le point de voir, ou sur le point de commencer l'analyse, 66 00:03:39,190 --> 00:03:40,750 est un nombre hexadécimal. 67 00:03:40,750 --> 00:03:45,590 Il est évident que pour les chiffres supérieurs a, b, c, d, et f, qui correspond à 10 à 15 68 00:03:45,590 --> 00:03:48,840 il est assez ambiguë qui est qui est un nombre hexadécimal. 69 00:03:48,840 --> 00:03:51,620 Et en fait, toute hexadécimale nombre qui a des lettres en elle, 70 00:03:51,620 --> 00:03:54,642 est probablement assez évident comme un nombre hexadécimal. 71 00:03:54,642 --> 00:03:56,350 Mais, encore, pour le un souci de clarté, il est 72 00:03:56,350 --> 00:03:58,290 toujours une bonne idée de préfixer chaque fois que vous 73 00:03:58,290 --> 00:04:01,835 se référer à un chiffre en hexadécimal Numéro faisant précéder d'un 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Donc, binaire, comme nous dit, a lieu valeurs. 76 00:04:06,810 --> 00:04:10,040 Il ya la position des unités, un lieu de deux, un lieu de quatre, et un endroit huit. 77 00:04:10,040 --> 00:04:13,640 Et décimal a également placer des valeurs, les unités, des dizaines, des centaines et des milliers 78 00:04:13,640 --> 00:04:15,910 que nous puissions tous nous rappeler de l'école primaire. 79 00:04:15,910 --> 00:04:18,050 Et hexadécimale est pas exception ici, vraiment. 80 00:04:18,050 --> 00:04:22,660 Il a également Place valeurs, mais plutôt d'être des puissances de 2 ou puissances de 10, 81 00:04:22,660 --> 00:04:25,050 ils sont puissances de 16. 82 00:04:25,050 --> 00:04:29,410 >> Ainsi, nous voyons un certain nombre de ce type nous savoir assez clairement qu'il est 397, non? 83 00:04:29,410 --> 00:04:33,420 Eh bien, si nous voyons un certain nombre de ce genre, nous savons que ce ne sont pas 397 plus. 84 00:04:33,420 --> 00:04:36,730 Ceci est la hexadécimal Numéro trois à neuf-sept ans. 85 00:04:36,730 --> 00:04:39,680 Il est pas 397, cela signifie quelque chose de différent, 86 00:04:39,680 --> 00:04:44,180 parce que nous sommes en puissances de 16 que tous les de notre place les valeurs au lieu des pouvoirs 87 00:04:44,180 --> 00:04:45,560 de 10. 88 00:04:45,560 --> 00:04:50,570 En fait, les valeurs de position serait ici la position des unités, le lieu de seize ans, 89 00:04:50,570 --> 00:04:55,080 et le lieu de deux cents cinquante-six, ce qui correspond à notre idée d'un ceux 90 00:04:55,080 --> 00:04:59,180 place, des dizaines place, et une centaines place, si le nombre était de 397. 91 00:04:59,180 --> 00:05:03,620 Mais depuis il est 0x 397, nous avons un lieu, ceux sixteens place, 92 00:05:03,620 --> 00:05:05,780 et un lieu de deux cents cinquante-six. 93 00:05:05,780 --> 00:05:09,460 Ou, un 16 à 0 la place, qui est de 1. 94 00:05:09,460 --> 00:05:12,420 A 16 à la première place de puissance, 16. 95 00:05:12,420 --> 00:05:17,080 A 16 carrés place, 256, et ainsi de suite, et ainsi de suite, et ainsi de suite. 96 00:05:17,080 --> 00:05:24,400 Donc, ce nombre est vraiment 3 fois 16 carré, plus 9 fois 16, plus 7. 97 00:05:24,400 --> 00:05:28,980 Je ne fais pas le calcul ici, mais il est pas 397, il est beaucoup, beaucoup plus grande que cela. 98 00:05:28,980 --> 00:05:34,050 >> De même, nous pourrions avoir adc 0x, bien que ce est une fois 16 carré. 99 00:05:34,050 --> 00:05:38,220 Ou si nous traduisons cela à notre notion des nombres décimaux, qui est 10 fois 100 00:05:38,220 --> 00:05:44,160 16 carrés, en plus d fois 16 ou plus 13 fois 16. 101 00:05:44,160 --> 00:05:47,410 Et ne vous inquiétez pas si vous ne l'avez pas mémorisé que d est 13, ou quelque chose comme ça, 102 00:05:47,410 --> 00:05:49,201 il n'y a pas trop de ces chiffres littéraux 103 00:05:49,201 --> 00:05:52,820 et il va devenir intuitive assez rapidement. 104 00:05:52,820 --> 00:05:59,800 Encore une fois cela est 10 fois 16 carré, plus de 13 fois 16, plus 12 fois 1. 105 00:05:59,800 --> 00:06:03,640 Adc Donc 0x. 106 00:06:03,640 --> 00:06:07,750 >> Donc, comme je le disais, tous les groupe de 4 chiffres binaires 107 00:06:07,750 --> 00:06:10,000 correspond à un unique chiffre hexadécimal, 108 00:06:10,000 --> 00:06:12,570 et il est donc en fait vraiment facile de changer avant et en arrière 109 00:06:12,570 --> 00:06:14,690 entre hexadécimal et en binaire. 110 00:06:14,690 --> 00:06:18,310 Si vous avez cette longue chaîne de chiffres binaires, tout ce que vous devez faire 111 00:06:18,310 --> 00:06:21,320 est de commencer les regroupant droit à gauche en tant que groupes de quatre. 112 00:06:21,320 --> 00:06:26,550 Et puis, vous pouvez consolider les en nombres hexadécimaux, 113 00:06:26,550 --> 00:06:30,910 sévèrement limiter le nombre de chiffres que vous avez à traiter mentalement. 114 00:06:30,910 --> 00:06:33,680 Au lieu de 32 0 et de 1, comme nous le verrons dans un second, 115 00:06:33,680 --> 00:06:37,630 vous pourriez être en mesure d'obtenir le bas à seulement 8 chiffres hexadécimaux, beaucoup 116 00:06:37,630 --> 00:06:39,200 plus concis. 117 00:06:39,200 --> 00:06:43,500 >> Les graphiques quelques diapositives BACK vous aider à comprendre cette cartographie, 118 00:06:43,500 --> 00:06:45,660 même si, encore une fois vous aurez mémoriser assez rapidement. 119 00:06:45,660 --> 00:06:47,320 Nous allons passer par un exemple en ce moment. 120 00:06:47,320 --> 00:06:51,507 Donc, si nous avons un certain nombre de ce genre, ce vraiment grand nombre binaire, 121 00:06:51,507 --> 00:06:53,340 ou ce qui semble être un grand nombre binaire. 122 00:06:53,340 --> 00:06:56,260 Et la raison pour laquelle je dis cela, il est so-- simplement qu'il est un monstre, non? 123 00:06:56,260 --> 00:06:58,959 Il ya tellement de 0 et de 1 là-bas. 124 00:06:58,959 --> 00:07:01,000 Mais nous faisons probablement pas vraiment avoir une idée de ce que 125 00:07:01,000 --> 00:07:02,870 l'ampleur de ce nombre est vraiment. 126 00:07:02,870 --> 00:07:06,150 Nous ne disposons pas la moindre idée de ce qu'il correspondrait à une décimale. 127 00:07:06,150 --> 00:07:09,744 Et en fait, nous allons même pas voir ce qu'il correspond au nombre décimal en ce moment. 128 00:07:09,744 --> 00:07:11,660 Nous pourrions être en mesure de exprimer ceci d'une manière que 129 00:07:11,660 --> 00:07:15,640 nous donnerait un peu plus d'informations à propos juste comment grand ce nombre est. 130 00:07:15,640 --> 00:07:17,270 >> Allons donc à ce processus de conversion. 131 00:07:17,270 --> 00:07:19,311 La première chose que nous devons à faire est de nous voulons groupe 132 00:07:19,311 --> 00:07:23,050 ces chiffres en groupes sur de 4, à partir de la droite 133 00:07:23,050 --> 00:07:24,120 et travaillant à gauche. 134 00:07:24,120 --> 00:07:27,260 Il arrive d'être 32 chiffres ici, ce qui signifie que nous avons 135 00:07:27,260 --> 00:07:33,210 une belle rupture nette de 8 groupes de 4. 136 00:07:33,210 --> 00:07:36,200 Rappelez-vous que chaque groupe de 4 ici, uniquement correspond 137 00:07:36,200 --> 00:07:37,760 à un chiffre hexadécimal. 138 00:07:37,760 --> 00:07:42,080 Nous allons donc commencer la construction de notre nouveau Numéro de la droite, à gauche et de travail. 139 00:07:42,080 --> 00:07:44,890 Eh bien ce qui est 1 101? 140 00:07:44,890 --> 00:07:49,220 Eh bien, nous faisons le calcul dans notre tête, nous avons 1 dans le lieu de huit, un 1 141 00:07:49,220 --> 00:07:54,310 à la place des pattes, un 0 dans les deux à deux place, et un 1 à la place des unités. 142 00:07:54,310 --> 00:07:58,820 Voilà 8 Plus 4 Plus 1, que nous ne saurions que 13. 143 00:07:58,820 --> 00:08:02,400 Mais nous ne serions probablement pas écrire sur 13, parce que nous travaillons avec la valeur hexadécimale. 144 00:08:02,400 --> 00:08:07,982 Nous avons besoin de convertir en hexadécimal équivalent de 13, ce qui est d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, bien que ya un 0 dans le lieu huit, un 0 dans quatre pattes place, 146 00:08:12,940 --> 00:08:15,190 un 1 à la place de deux, et un 1 à la place des unités. 147 00:08:15,190 --> 00:08:16,880 Voilà 3. 148 00:08:16,880 --> 00:08:20,180 Je veux dire continuer à faire ça encore une fois, nous avons ici 9. 149 00:08:20,180 --> 00:08:23,850 Et puis 11, mais qui est b, rappel. 150 00:08:23,850 --> 00:08:30,570 2, 10-- ou a-- 6, et 4. 151 00:08:30,570 --> 00:08:34,669 Et pour que très grande chaîne de 0 et des 1 du top 152 00:08:34,669 --> 00:08:38,549 est exprimé de façon plus concise en hexadécimal comme 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Eh bien, OK, nous avons appris une nouvelle compétences cool, quel est le point? 155 00:08:45,870 --> 00:08:49,560 Nous pourrions ne pas utiliser tout cela, le temps, comme nous allons voir bientôt, 156 00:08:49,560 --> 00:08:52,370 nous utilisons hexadécimal assez beaucoup de programmeurs. 157 00:08:52,370 --> 00:08:55,060 Pas nécessairement pour le but de faire des maths avec elle, 158 00:08:55,060 --> 00:08:58,470 mais parce qu'un grand nombre de fois des adresses de mémoire dans le système 159 00:08:58,470 --> 00:09:00,440 sont représentés en hexadécimal. 160 00:09:00,440 --> 00:09:04,390 Il est un moyen très concise d'exprimer autrement, la lourdeur des nombres binaires. 161 00:09:04,390 --> 00:09:06,440 Et donc, encore une fois, vous pouvez pas-- vous êtes probablement 162 00:09:06,440 --> 00:09:07,640 ne va pas faire toute mathématiques avec elle, vous n'êtes pas 163 00:09:07,640 --> 00:09:09,848 va être multiplier nombres hexadécimaux ensemble, 164 00:09:09,848 --> 00:09:11,770 ou de faire quelque chose de bizarre comme ça. 165 00:09:11,770 --> 00:09:16,120 Mais il est une compétence utile d'avoir de sorte que vous pouvez exprimer et comprendre 166 00:09:16,120 --> 00:09:23,290 des adresses mémoire, et d'autres façons d'utiliser les données en C. 167 00:09:23,290 --> 00:09:26,240 >> Je suis Doug Lloyd, cela est CS50. 168 00:09:26,240 --> 00:09:28,028