1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: números hexadecimals Així, com si necessitàvem un altre nombre base 3 00:00:08,510 --> 00:00:09,970 dret esquema? 4 00:00:09,970 --> 00:00:13,000 Bé, la majoria de les cultures occidentals, com vostè probablement està familiaritzat, 5 00:00:13,000 --> 00:00:16,560 utilitzar la base system-- decimal 10, per a representar dades numèriques. 6 00:00:16,560 --> 00:00:20,520 Tenim els dígits 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 I si hem de representar valors superiors a nou, 8 00:00:23,890 --> 00:00:26,800 podem combinar aquests dígits utilitzant el concepte de valor posicional. 9 00:00:26,800 --> 00:00:30,115 Així que per 10, tenim 1 gen dígits seguit d'un 0 dígits 10 00:00:30,115 --> 00:00:32,240 i que intuïtivament entenem que el que estem fent 11 00:00:32,240 --> 00:00:35,500 no estem multiplicant la primera 1 per 10, 12 00:00:35,500 --> 00:00:37,689 i després afegint 0 per a un total de 10. 13 00:00:37,689 --> 00:00:40,480 Ordinadors fer alguna cosa bonica similar, ja que probablement estigui familiaritzat, 14 00:00:40,480 --> 00:00:42,409 amb la base 2 system-- binari. 15 00:00:42,409 --> 00:00:44,700 La diferència que hi hagi que hi ha només 2 dígits 16 00:00:44,700 --> 00:00:46,770 per treballar con-- 0 i 1. 17 00:00:46,770 --> 00:00:49,033 I perquè els nostres valors de lloc, en lloc de ser un, 18 00:00:49,033 --> 00:00:52,600 deu, cent, mil, ja que seria en el sistema decimal, 19 00:00:52,600 --> 00:00:57,690 són un, dos, quatre, vuit, i així successivament. 20 00:00:57,690 --> 00:01:00,842 Aquí està la cosa, però, aquells de 0 i 1, especialment de 21 00:01:00,842 --> 00:01:03,800 si estem sent els informàtics i estem fent un munt de programació 22 00:01:03,800 --> 00:01:06,924 o treballar amb ordinadors, anàvem estar veient un munt de nombres binaris. 23 00:01:06,924 --> 00:01:11,660 I els de de 0 i 1 en les grans cadenes pot ser molt difícil d'analitzar. 24 00:01:11,660 --> 00:01:16,610 No podem mirar a una sèrie de 0 d'1 i de i necessàriament saber 25 00:01:16,610 --> 00:01:17,810 exactament el que és. 26 00:01:17,810 --> 00:01:21,980 Però tot i així és útil poder dades expressos de la mateixa manera 27 00:01:21,980 --> 00:01:23,480 que fa un ordinador. 28 00:01:23,480 --> 00:01:26,580 Tenim aquesta idea de la sistema hexadecimal, que és 29 00:01:26,580 --> 00:01:29,840 base 16, en lloc de la base 10 o la base 2. 30 00:01:29,840 --> 00:01:34,420 El que vol dir que tenim 16 dígits per treballar amb en lloc de 10 o 2. 31 00:01:34,420 --> 00:01:37,180 I és una molt més forma concisa d'expressar 32 00:01:37,180 --> 00:01:41,210 informació binària en un sistema informàtic, és molt més humà comprensible. 33 00:01:41,210 --> 00:01:43,520 Així que tenim els dígits Del 0 al 9, i després 34 00:01:43,520 --> 00:01:49,480 també tenim aquests addicional de sis digits-- 1, b, c, d, e, if, que representen 10, 35 00:01:49,480 --> 00:01:56,050 la nostra noció de 10, 11, 12, 13, 14 i 15, en decimal. 36 00:01:56,050 --> 00:01:59,787 A vegades, per cert, vostè també veure aquests el passi de f com majúscula 37 00:01:59,787 --> 00:02:01,620 a través de F, que és el com jo tendeixo a fer-ho. 38 00:02:01,620 --> 00:02:04,560 És només el meu preferit estil, però tampoc està bé, 39 00:02:04,560 --> 00:02:07,870 ambdós representen bastant el mateix. 40 00:02:07,870 --> 00:02:09,090 >> Per què és fresc hexadecimal? 41 00:02:09,090 --> 00:02:11,580 Per què necessitem per utilitzar aquest una altra base addicional? 42 00:02:11,580 --> 00:02:14,310 Ja tenim 2 i 10, per què necessitem 16? 43 00:02:14,310 --> 00:02:21,650 Bé 16 és una potència de 2, i així cada dígit hexadecimal, 0 a f, 44 00:02:21,650 --> 00:02:25,440 correspon a un únic ordenar, o disposició única 45 00:02:25,440 --> 00:02:29,060 de 4 dígits binaris, 4 bits. 46 00:02:29,060 --> 00:02:34,570 I així, en aquest sentit, podem expressar molt llargs, nombres binaris i complexos 47 00:02:34,570 --> 00:02:36,440 en hexadecimal en una tant de manera més concisa, 48 00:02:36,440 --> 00:02:41,080 sense perdre informació o haver de fer conversions particularment enutjosos 49 00:02:41,080 --> 00:02:42,480 en aquests números. 50 00:02:42,480 --> 00:02:44,880 >> Així que, com acabo de dir, cada dígit hexadecimal 51 00:02:44,880 --> 00:02:48,630 correspon a un únic disposició de 4 dígits binaris. 52 00:02:48,630 --> 00:02:53,670 Així que la cadena binària 0000 correspon al dígit hexadecimal 0. 53 00:02:53,670 --> 00:03:00,340 0110 correspon al dígit hexadecimal juny. 54 00:03:00,340 --> 00:03:05,225 I 1111 correspon a hexadecimal dígits f. 55 00:03:05,225 --> 00:03:07,100 Si vostè està buscant en aquest gràfic, en particular 56 00:03:07,100 --> 00:03:09,099 si vostè està buscant en el costat esquerre de la taula, 57 00:03:09,099 --> 00:03:11,970 ja es pot veure que hi ha una mica d'un problema d'ambigüitat aquí. 58 00:03:11,970 --> 00:03:15,229 Decimal 0 és més o menys indistingible de hexadecimal 0, 59 00:03:15,229 --> 00:03:18,020 a banda del fet que és baix una columna que diu hexadecimal. 60 00:03:18,020 --> 00:03:22,130 >> Però probablement no ho farà sempre tenir aquesta columna allà. 61 00:03:22,130 --> 00:03:25,420 En general, quan estem expressant nombres en notació hexadecimal 62 00:03:25,420 --> 00:03:28,130 distingir clarament des de la notació decimal, 63 00:03:28,130 --> 00:03:31,860 que en general els anteposem amb el prefix 0x. 64 00:03:31,860 --> 00:03:35,990 0x no significa res en la realitat, és només una pista per a nosaltres com a éssers humans 65 00:03:35,990 --> 00:03:39,190 que el que estem a punt de veure, oa punt de començar l'anàlisi, 66 00:03:39,190 --> 00:03:40,750 és un nombre hexadecimal. 67 00:03:40,750 --> 00:03:45,590 Òbviament per als dígits més alts a, b, c, d, if, que corresponen 10-15 68 00:03:45,590 --> 00:03:48,840 és bastant ambigua que és això és un nombre hexadecimal. 69 00:03:48,840 --> 00:03:51,620 I de fet, qualsevol hexadecimal nombre que té les lletres en el mateix, 70 00:03:51,620 --> 00:03:54,642 és probablement bastant obvi com un nombre hexadecimal. 71 00:03:54,642 --> 00:03:56,350 Però, tot i així, per a la nom de la claredat, és 72 00:03:56,350 --> 00:03:58,290 sempre és una bona idea prefix cada vegada que 73 00:03:58,290 --> 00:04:01,835 referir-se a un dígit hexadecimal com una nombre anteposant 1 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Així, binari, com hem Dit això, té valors de lloc. 76 00:04:06,810 --> 00:04:10,040 Aquí està el lloc de les unitats, un lloc de dos en dos, un lloc a un quatre potes, i un lloc vuits. 77 00:04:10,040 --> 00:04:13,640 I decimal també té lloc els valors, les unitats, desenes, centenars i milers 78 00:04:13,640 --> 00:04:15,910 que tots puguem recordar des de l'escola primària. 79 00:04:15,910 --> 00:04:18,050 I hexadecimal hi excepció aquí, de veritat. 80 00:04:18,050 --> 00:04:22,660 També compta amb valors de lloc, però en lloc de ser potències de 2 o potències de 10, 81 00:04:22,660 --> 00:04:25,050 que són potències de 16. 82 00:04:25,050 --> 00:04:29,410 >> Així que veiem una sèrie com aquesta ens prou clarament sap que és 397, oi? 83 00:04:29,410 --> 00:04:33,420 Bé, si veiem una sèrie com aquesta, sabem que això no és 397 més. 84 00:04:33,420 --> 00:04:36,730 Aquest és l'hexadecimal nombre tres-9-7. 85 00:04:36,730 --> 00:04:39,680 No és 397, significa alguna cosa diferent, 86 00:04:39,680 --> 00:04:44,180 perquè estem utilitzant potències de 16 com tots dels nostres valors de lloc en lloc de poders 87 00:04:44,180 --> 00:04:45,560 de 10. 88 00:04:45,560 --> 00:04:50,570 De fet, els valors de lloc aquí faria ser el lloc de les unitats, el lloc sixteens, 89 00:04:50,570 --> 00:04:55,080 i el lloc de dos cents cinquanta-sis, que corresponen a la nostra idea d'uns estimats 90 00:04:55,080 --> 00:04:59,180 lloc, desenes lloc, i uns centenars lloc, si el nombre era de 397. 91 00:04:59,180 --> 00:05:03,620 Però ja que està 0x 397, tenim un lloc, els sixteens lloc, 92 00:05:03,620 --> 00:05:05,780 i un lloc de dos cents cinquanta-sis. 93 00:05:05,780 --> 00:05:09,460 O bé, un 16 a la 0 lloc, que és 1. 94 00:05:09,460 --> 00:05:12,420 Un 16 per al primer lloc el poder, 16. 95 00:05:12,420 --> 00:05:17,080 Un 16 quadrats lloc, 256, i així successivament, i així successivament, i així successivament. 96 00:05:17,080 --> 00:05:24,400 Així que aquest nombre és realment 3 vegades 16 quadrat, a més de 9 vegades 16, més 7. 97 00:05:24,400 --> 00:05:28,980 Jo no he fet els càlculs aquí, però no és 397, que és molt, molt més gran que això. 98 00:05:28,980 --> 00:05:34,050 >> De la mateixa manera, podríem tenir adc 0x, així que és un moment 16 al quadrat. 99 00:05:34,050 --> 00:05:38,220 O si traduïm això a la nostra noció dels nombres decimals, això és 10 vegades 100 00:05:38,220 --> 00:05:44,160 16 al quadrat, més d vegades 16 o més 13 vegades 16. 101 00:05:44,160 --> 00:05:47,410 I no et preocupis si no has après de memòria que d és 13, ni res d'això, 102 00:05:47,410 --> 00:05:49,201 no hi ha massa d'aquests dígits de lletres 103 00:05:49,201 --> 00:05:52,820 i es convertirà en intuïtiva amb força rapidesa. 104 00:05:52,820 --> 00:05:59,800 Així que de nou això és 10 vegades 16 al quadrat, a més 13 vegades 16, més 12 vegades 1. 105 00:05:59,800 --> 00:06:03,640 Adc Així 0x. 106 00:06:03,640 --> 00:06:07,750 >> Així que, com he dit, cada grup de 4 dígits binaris 107 00:06:07,750 --> 00:06:10,000 correspon a un sol dígit hexadecimal, 108 00:06:10,000 --> 00:06:12,570 i el que és realment molt fàcil canviar d'anada i tornada 109 00:06:12,570 --> 00:06:14,690 entre hexadecimal i binari. 110 00:06:14,690 --> 00:06:18,310 Si vostè té aquesta llarga cadena de dígits binaris, l'únic que han de fer 111 00:06:18,310 --> 00:06:21,320 és començar a agrupar-dret a esquerra com a grups de 4. 112 00:06:21,320 --> 00:06:26,550 I llavors vostè pot consolidar en nombres hexadecimals, 113 00:06:26,550 --> 00:06:30,910 limitant severament el nombre de dígits que ha de processar mentalment. 114 00:06:30,910 --> 00:06:33,680 En lloc de 32 de 0 i de 1, com veurem en un segon, 115 00:06:33,680 --> 00:06:37,630 és possible que pugui aconseguir-baix a 8 dígits hexadecimals, molt 116 00:06:37,630 --> 00:06:39,200 més concís. 117 00:06:39,200 --> 00:06:43,500 >> Les taules d'algunes diapositives esquena es l'ajudarà a esbrinar aquest mapatge, 118 00:06:43,500 --> 00:06:45,660 tot i que, de nou Vostè memoritzar amb força rapidesa. 119 00:06:45,660 --> 00:06:47,320 Anem a anar a través d'un exemple en aquest moment. 120 00:06:47,320 --> 00:06:51,507 Així que si tenim una sèrie com aquesta, això realment gran nombre binari, 121 00:06:51,507 --> 00:06:53,340 o el que sembla ser un nombre binari gran. 122 00:06:53,340 --> 00:06:56,260 I la raó per la qual dic això, és Només així que-- és un gegant, no? 123 00:06:56,260 --> 00:06:58,959 Hi ha tants de 0 i 1 d'allà. 124 00:06:58,959 --> 00:07:01,000 Però probablement no ho fem realment tenen un sentit del 125 00:07:01,000 --> 00:07:02,870 la magnitud d'aquest número és en realitat. 126 00:07:02,870 --> 00:07:06,150 No tenim idea del que correspondria a un decimal. 127 00:07:06,150 --> 00:07:09,744 I, de fet, no anem a veure fins a quin correspon en decimal en aquest moment. 128 00:07:09,744 --> 00:07:11,660 Podríem ser capaços de expressar això d'una manera que 129 00:07:11,660 --> 00:07:15,640 ens donaria una mica més d'informació sobre el gran que és aquest número. 130 00:07:15,640 --> 00:07:17,270 >> Així que anem a anar a aquest procés de conversió. 131 00:07:17,270 --> 00:07:19,311 La primera cosa que necessitem de fer és que volem grup 132 00:07:19,311 --> 00:07:23,050 aquests dígits cap a fora en grups de 4, començant per la dreta 133 00:07:23,050 --> 00:07:24,120 i treballant cap a l'esquerra. 134 00:07:24,120 --> 00:07:27,260 Passa que hi ha 32 dígits aquí, el que significa que tenim 135 00:07:27,260 --> 00:07:33,210 un bon descans neta de 8 grups de 4. 136 00:07:33,210 --> 00:07:36,200 Recordeu que cada grup de 4 aquí, singularment correspon 137 00:07:36,200 --> 00:07:37,760 a un dígit hexadecimal. 138 00:07:37,760 --> 00:07:42,080 Així que anem a començar de nou la construcció de la nostra nombre de la dreta, i de treball se'n va anar. 139 00:07:42,080 --> 00:07:44,890 Bé el que és 1101? 140 00:07:44,890 --> 00:07:49,220 Bé fem les matemàtiques en el nostre cap, tenim 1 en el lloc vuits, un 1 141 00:07:49,220 --> 00:07:54,310 al lloc quatre potes, un 0 en les parelles lloc, i un 1 al lloc de les unitats. 142 00:07:54,310 --> 00:07:58,820 Això és 8 més 4 més 1, que sabríem com 13. 143 00:07:58,820 --> 00:08:02,400 Però probablement no escriuríem 13 cap a fora, perquè estem treballant amb hexadecimal. 144 00:08:02,400 --> 00:08:07,982 Hem de convertir al format hexadecimal equivalent de 13, que és d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, així que és un 0 al lloc vuits, un 0 en quatre potes lloc, 146 00:08:12,940 --> 00:08:15,190 un 1 al lloc de dos en dos, i un 1 al lloc de les unitats. 147 00:08:15,190 --> 00:08:16,880 Això és 3. 148 00:08:16,880 --> 00:08:20,180 Em refereixo a seguir fent això una vegada més, que tenim aquí 9. 149 00:08:20,180 --> 00:08:23,850 I després 11, però això és b, el record. 150 00:08:23,850 --> 00:08:30,570 2, 10-- o A-- 6 i 4. 151 00:08:30,570 --> 00:08:34,669 I perquè gran cadena de de 0 i 1 de la part superior de 152 00:08:34,669 --> 00:08:38,549 s'expressa de forma més concisa en hexadecimal com 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Bé, està bé, hem après una nova habilitat fresc, quin sentit té? 155 00:08:45,870 --> 00:08:49,560 Potser no utilitzi això tot el temps, com veurem aviat, 156 00:08:49,560 --> 00:08:52,370 fem servir hexadecimal bastant molt com programadors. 157 00:08:52,370 --> 00:08:55,060 No necessàriament per al propòsit de fer matemàtiques amb ell, 158 00:08:55,060 --> 00:08:58,470 sinó perquè moltes vegades adreces de memòria en el nostre sistema 159 00:08:58,470 --> 00:09:00,440 estan representats en hexadecimal. 160 00:09:00,440 --> 00:09:04,390 És una manera molt concisa d'expressar en cas contrari, nombres binaris molest. 161 00:09:04,390 --> 00:09:06,440 I així, un cop més, és possible que no-- vostè està probablement 162 00:09:06,440 --> 00:09:07,640 No farem cap matemàtiques amb ella, vostè no està 163 00:09:07,640 --> 00:09:09,848 serà la multiplicació números hexadecimals junts, 164 00:09:09,848 --> 00:09:11,770 o fer qualsevol estrany com això. 165 00:09:11,770 --> 00:09:16,120 Però és una habilitat útil tenir perquè pugui expressar i comprendre 166 00:09:16,120 --> 00:09:23,290 adreces de memòria, i una altra formes d'utilització de les dades en C. 167 00:09:23,290 --> 00:09:26,240 >> Sóc Doug Lloyd, això és CS50. 168 00:09:26,240 --> 00:09:28,028