DOUG LLYOYD: números hexadecimals Així, com si necessitàvem un altre nombre base dret esquema? Bé, la majoria de les cultures occidentals, com vostè probablement està familiaritzat, utilitzar la base system-- decimal 10, per a representar dades numèriques. Tenim els dígits 0, 1, 2, 3, 5, 6, 7,8,9. I si hem de representar valors superiors a nou, podem combinar aquests dígits utilitzant el concepte de valor posicional. Així que per 10, tenim 1 gen dígits seguit d'un 0 dígits i que intuïtivament entenem que el que estem fent no estem multiplicant la primera 1 per 10, i després afegint 0 per a un total de 10. Ordinadors fer alguna cosa bonica similar, ja que probablement estigui familiaritzat, amb la base 2 system-- binari. La diferència que hi hagi que hi ha només 2 dígits per treballar con-- 0 i 1. I perquè els nostres valors de lloc, en lloc de ser un, deu, cent, mil, ja que seria en el sistema decimal, són un, dos, quatre, vuit, i així successivament. Aquí està la cosa, però, aquells de 0 i 1, especialment de si estem sent els informàtics i estem fent un munt de programació o treballar amb ordinadors, anàvem estar veient un munt de nombres binaris. I els de de 0 i 1 en les grans cadenes pot ser molt difícil d'analitzar. No podem mirar a una sèrie de 0 d'1 i de i necessàriament saber exactament el que és. Però tot i així és útil poder dades expressos de la mateixa manera que fa un ordinador. Tenim aquesta idea de la sistema hexadecimal, que és base 16, en lloc de la base 10 o la base 2. El que vol dir que tenim 16 dígits per treballar amb en lloc de 10 o 2. I és una molt més forma concisa d'expressar informació binària en un sistema informàtic, és molt més humà comprensible. Així que tenim els dígits Del 0 al 9, i després també tenim aquests addicional de sis digits-- 1, b, c, d, e, if, que representen 10, la nostra noció de 10, 11, 12, 13, 14 i 15, en decimal. A vegades, per cert, vostè també veure aquests el passi de f com majúscula a través de F, que és el com jo tendeixo a fer-ho. És només el meu preferit estil, però tampoc està bé, ambdós representen bastant el mateix. Per què és fresc hexadecimal? Per què necessitem per utilitzar aquest una altra base addicional? Ja tenim 2 i 10, per què necessitem 16? Bé 16 és una potència de 2, i així cada dígit hexadecimal, 0 a f, correspon a un únic ordenar, o disposició única de 4 dígits binaris, 4 bits. I així, en aquest sentit, podem expressar molt llargs, nombres binaris i complexos en hexadecimal en una tant de manera més concisa, sense perdre informació o haver de fer conversions particularment enutjosos en aquests números. Així que, com acabo de dir, cada dígit hexadecimal correspon a un únic disposició de 4 dígits binaris. Així que la cadena binària 0000 correspon al dígit hexadecimal 0. 0110 correspon al dígit hexadecimal juny. I 1111 correspon a hexadecimal dígits f. Si vostè està buscant en aquest gràfic, en particular si vostè està buscant en el costat esquerre de la taula, ja es pot veure que hi ha una mica d'un problema d'ambigüitat aquí. Decimal 0 és més o menys indistingible de hexadecimal 0, a banda del fet que és baix una columna que diu hexadecimal. Però probablement no ho farà sempre tenir aquesta columna allà. En general, quan estem expressant nombres en notació hexadecimal distingir clarament des de la notació decimal, que en general els anteposem amb el prefix 0x. 0x no significa res en la realitat, és només una pista per a nosaltres com a éssers humans que el que estem a punt de veure, oa punt de començar l'anàlisi, és un nombre hexadecimal. Òbviament per als dígits més alts a, b, c, d, if, que corresponen 10-15 és bastant ambigua que és això és un nombre hexadecimal. I de fet, qualsevol hexadecimal nombre que té les lletres en el mateix, és probablement bastant obvi com un nombre hexadecimal. Però, tot i així, per a la nom de la claredat, és sempre és una bona idea prefix cada vegada que referir-se a un dígit hexadecimal com una nombre anteposant 1 0x. Així, binari, com hem Dit això, té valors de lloc. Aquí està el lloc de les unitats, un lloc de dos en dos, un lloc a un quatre potes, i un lloc vuits. I decimal també té lloc els valors, les unitats, desenes, centenars i milers que tots puguem recordar des de l'escola primària. I hexadecimal hi excepció aquí, de veritat. També compta amb valors de lloc, però en lloc de ser potències de 2 o potències de 10, que són potències de 16. Així que veiem una sèrie com aquesta ens prou clarament sap que és 397, oi? Bé, si veiem una sèrie com aquesta, sabem que això no és 397 més. Aquest és l'hexadecimal nombre tres-9-7. No és 397, significa alguna cosa diferent, perquè estem utilitzant potències de 16 com tots dels nostres valors de lloc en lloc de poders de 10. De fet, els valors de lloc aquí faria ser el lloc de les unitats, el lloc sixteens, i el lloc de dos cents cinquanta-sis, que corresponen a la nostra idea d'uns estimats lloc, desenes lloc, i uns centenars lloc, si el nombre era de 397. Però ja que està 0x 397, tenim un lloc, els sixteens lloc, i un lloc de dos cents cinquanta-sis. O bé, un 16 a la 0 lloc, que és 1. Un 16 per al primer lloc el poder, 16. Un 16 quadrats lloc, 256, i així successivament, i així successivament, i així successivament. Així que aquest nombre és realment 3 vegades 16 quadrat, a més de 9 vegades 16, més 7. Jo no he fet els càlculs aquí, però no és 397, que és molt, molt més gran que això. De la mateixa manera, podríem tenir adc 0x, així que és un moment 16 al quadrat. O si traduïm això a la nostra noció dels nombres decimals, això és 10 vegades 16 al quadrat, més d vegades 16 o més 13 vegades 16. I no et preocupis si no has après de memòria que d és 13, ni res d'això, no hi ha massa d'aquests dígits de lletres i es convertirà en intuïtiva amb força rapidesa. Així que de nou això és 10 vegades 16 al quadrat, a més 13 vegades 16, més 12 vegades 1. Adc Així 0x. Així que, com he dit, cada grup de 4 dígits binaris correspon a un sol dígit hexadecimal, i el que és realment molt fàcil canviar d'anada i tornada entre hexadecimal i binari. Si vostè té aquesta llarga cadena de dígits binaris, l'únic que han de fer és començar a agrupar-dret a esquerra com a grups de 4. I llavors vostè pot consolidar en nombres hexadecimals, limitant severament el nombre de dígits que ha de processar mentalment. En lloc de 32 de 0 i de 1, com veurem en un segon, és possible que pugui aconseguir-baix a 8 dígits hexadecimals, molt més concís. Les taules d'algunes diapositives esquena es l'ajudarà a esbrinar aquest mapatge, tot i que, de nou Vostè memoritzar amb força rapidesa. Anem a anar a través d'un exemple en aquest moment. Així que si tenim una sèrie com aquesta, això realment gran nombre binari, o el que sembla ser un nombre binari gran. I la raó per la qual dic això, és Només així que-- és un gegant, no? Hi ha tants de 0 i 1 d'allà. Però probablement no ho fem realment tenen un sentit del la magnitud d'aquest número és en realitat. No tenim idea del que correspondria a un decimal. I, de fet, no anem a veure fins a quin correspon en decimal en aquest moment. Podríem ser capaços de expressar això d'una manera que ens donaria una mica més d'informació sobre el gran que és aquest número. Així que anem a anar a aquest procés de conversió. La primera cosa que necessitem de fer és que volem grup aquests dígits cap a fora en grups de 4, començant per la dreta i treballant cap a l'esquerra. Passa que hi ha 32 dígits aquí, el que significa que tenim un bon descans neta de 8 grups de 4. Recordeu que cada grup de 4 aquí, singularment correspon a un dígit hexadecimal. Així que anem a començar de nou la construcció de la nostra nombre de la dreta, i de treball se'n va anar. Bé el que és 1101? Bé fem les matemàtiques en el nostre cap, tenim 1 en el lloc vuits, un 1 al lloc quatre potes, un 0 en les parelles lloc, i un 1 al lloc de les unitats. Això és 8 més 4 més 1, que sabríem com 13. Però probablement no escriuríem 13 cap a fora, perquè estem treballant amb hexadecimal. Hem de convertir al format hexadecimal equivalent de 13, que és d. 0011, així que és un 0 al lloc vuits, un 0 en quatre potes lloc, un 1 al lloc de dos en dos, i un 1 al lloc de les unitats. Això és 3. Em refereixo a seguir fent això una vegada més, que tenim aquí 9. I després 11, però això és b, el record. 2, 10-- o A-- 6 i 4. I perquè gran cadena de de 0 i 1 de la part superior de s'expressa de forma més concisa en hexadecimal com 0x 46a2b93d. Bé, està bé, hem après una nova habilitat fresc, quin sentit té? Potser no utilitzi això tot el temps, com veurem aviat, fem servir hexadecimal bastant molt com programadors. No necessàriament per al propòsit de fer matemàtiques amb ell, sinó perquè moltes vegades adreces de memòria en el nostre sistema estan representats en hexadecimal. És una manera molt concisa d'expressar en cas contrari, nombres binaris molest. I així, un cop més, és possible que no-- vostè està probablement No farem cap matemàtiques amb ella, vostè no està serà la multiplicació números hexadecimals junts, o fer qualsevol estrany com això. Però és una habilitat útil tenir perquè pugui expressar i comprendre adreces de memòria, i una altra formes d'utilització de les dades en C. Sóc Doug Lloyd, això és CS50.