1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: numeri esadecimali Così, come se avevamo bisogno di un altro numero di base 3 00:00:08,510 --> 00:00:09,970 schema giusto? 4 00:00:09,970 --> 00:00:13,000 Beh, la maggior parte delle culture occidentali, come probabilmente sei a conoscenza, 5 00:00:13,000 --> 00:00:16,560 utilizzare la base system-- decimale 10, per rappresentare i dati numerici. 6 00:00:16,560 --> 00:00:20,520 Abbiamo le cifre 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 E se abbiamo bisogno di rappresentare valori superiori a nove, 8 00:00:23,890 --> 00:00:26,800 possiamo combinare queste cifre utilizzando il concetto di valore posto. 9 00:00:26,800 --> 00:00:30,115 Quindi per 10, abbiamo un 1 cifra seguita da una cifra 0 10 00:00:30,115 --> 00:00:32,240 e comprendiamo intuitivamente che quello che stiamo facendo 11 00:00:32,240 --> 00:00:35,500 c'è stiamo moltiplicando il primo 1 da 10, 12 00:00:35,500 --> 00:00:37,689 e quindi aggiungendo 0 per un totale di 10. 13 00:00:37,689 --> 00:00:40,480 I computer fanno qualcosa di molto simile, come probabilmente siete a conoscenza, 14 00:00:40,480 --> 00:00:42,409 con la base system-- binario 2. 15 00:00:42,409 --> 00:00:44,700 La differenza che ci sia che ci sono solo 2 cifre 16 00:00:44,700 --> 00:00:46,770 lavorare with-- 0 e 1. 17 00:00:46,770 --> 00:00:49,033 E così i nostri valori posto, invece di essere uno, 18 00:00:49,033 --> 00:00:52,600 dieci, cento, mille, in quanto sarebbe nel sistema decimale, 19 00:00:52,600 --> 00:00:57,690 sono uno, due, quattro, otto, e così via. 20 00:00:57,690 --> 00:01:00,842 Ecco la cosa, però, quelle di 0 e 1, in particolare di 21 00:01:00,842 --> 00:01:03,800 se vogliamo essere gli informatici e stiamo facendo un sacco di programmazione 22 00:01:03,800 --> 00:01:06,924 o lavorare con i computer, erano in corso da vedere un sacco di numeri binari. 23 00:01:06,924 --> 00:01:11,660 E quei 0 e 1 nella grandi catene può essere molto difficile da analizzare. 24 00:01:11,660 --> 00:01:16,610 Non possiamo solo guardare una serie di 0 e 1 e necessariamente conoscere 25 00:01:16,610 --> 00:01:17,810 esattamente quello che è. 26 00:01:17,810 --> 00:01:21,980 Ma è ancora utile per essere in grado i dati espressi nello stesso modo 27 00:01:21,980 --> 00:01:23,480 che un computer fa. 28 00:01:23,480 --> 00:01:26,580 Abbiamo questa nozione di sistema esadecimale, che è 29 00:01:26,580 --> 00:01:29,840 base 16, invece di base 10 o base 2. 30 00:01:29,840 --> 00:01:34,420 Il che significa che abbiamo 16 cifre di lavorare con invece di 10 o 2. 31 00:01:34,420 --> 00:01:37,180 Ed è molto più modo conciso per esprimere 32 00:01:37,180 --> 00:01:41,210 informazioni binarie su un sistema di computer, è molto più umano comprensibile. 33 00:01:41,210 --> 00:01:43,520 Così abbiamo le cifre Da 0 a 9, e poi 34 00:01:43,520 --> 00:01:49,480 abbiamo anche questi in più sei un digits--, b, c, d, e ed f, che rappresentano 10, 35 00:01:49,480 --> 00:01:56,050 nostra nozione di 10, 11, 12, 13, 14 e 15, in decimale. 36 00:01:56,050 --> 00:01:59,787 A volte, tra l'altro, potrai anche vedere questi un bel passaggio di F come maiuscola 37 00:01:59,787 --> 00:02:01,620 attraverso F, che è il modo tendo a farlo. 38 00:02:01,620 --> 00:02:04,560 E 'solo il mio preferito stile, ma o è bene, 39 00:02:04,560 --> 00:02:07,870 entrambi rappresentano piuttosto più o meno la stessa cosa. 40 00:02:07,870 --> 00:02:09,090 >> Allora, perché è cool esadecimale? 41 00:02:09,090 --> 00:02:11,580 Perché abbiamo bisogno di usare questo altra base supplementare? 42 00:02:11,580 --> 00:02:14,310 Abbiamo già 2 e 10, perché abbiamo bisogno 16? 43 00:02:14,310 --> 00:02:21,650 Ben 16 è una potenza di 2, e così ogni cifra esadecimale, da 0 a F, 44 00:02:21,650 --> 00:02:25,440 corrisponde a un unico ordinazione, o accordo unico 45 00:02:25,440 --> 00:02:29,060 di 4 cifre binarie, 4 bit. 46 00:02:29,060 --> 00:02:34,570 E quindi in questo senso, possiamo esprimere molto lunghe, complesse, numeri binari 47 00:02:34,570 --> 00:02:36,440 in esadecimale in un molto modo più conciso, 48 00:02:36,440 --> 00:02:41,080 senza perdere informazioni o di dover fare conversioni particolarmente ingombranti 49 00:02:41,080 --> 00:02:42,480 su quei numeri. 50 00:02:42,480 --> 00:02:44,880 >> Quindi, come ho appena detto, ogni cifra esadecimale 51 00:02:44,880 --> 00:02:48,630 corrisponde a un unico disposizione di 4 cifre binarie. 52 00:02:48,630 --> 00:02:53,670 Così la stringa binaria 0000 corrisponde a esadecimale cifra 0. 53 00:02:53,670 --> 00:03:00,340 0110 corrisponde a cifra esadecimale 6. 54 00:03:00,340 --> 00:03:05,225 E 1111 corrisponde in esadecimale cifre f. 55 00:03:05,225 --> 00:03:07,100 Se stai guardando questo grafico, in particolare 56 00:03:07,100 --> 00:03:09,099 se si sta guardando la lato sinistro del grafico, 57 00:03:09,099 --> 00:03:11,970 si può già vedere c'è una po 'di un problema di ambiguità qui. 58 00:03:11,970 --> 00:03:15,229 Decimale 0 è praticamente indistinguibile da esadecimale 0, 59 00:03:15,229 --> 00:03:18,020 a parte il fatto che è sotto una colonna che dice esadecimale. 60 00:03:18,020 --> 00:03:22,130 >> Ma probabilmente non sarà sempre avere quella colonna lì. 61 00:03:22,130 --> 00:03:25,420 Generalmente quando stiamo esprimendo numeri in notazione esadecimale 62 00:03:25,420 --> 00:03:28,130 distinguere chiaramente loro di notazione decimale, 63 00:03:28,130 --> 00:03:31,860 noi di solito li prefissa con il prefisso 0x. 64 00:03:31,860 --> 00:03:35,990 0x non significa nulla in realtà, è solo un indizio per noi come esseri umani 65 00:03:35,990 --> 00:03:39,190 che quello che stiamo per vedere, o per iniziare l'analisi, 66 00:03:39,190 --> 00:03:40,750 è un numero esadecimale. 67 00:03:40,750 --> 00:03:45,590 Ovviamente per le cifre superiori a, b, c, d, e, f, che corrispondono a 10-15 68 00:03:45,590 --> 00:03:48,840 è abbastanza inequivocabile che è questo è un numero esadecimale. 69 00:03:48,840 --> 00:03:51,620 Ed infatti, qualsiasi esadecimale numero che ha le lettere in esso, 70 00:03:51,620 --> 00:03:54,642 è probabilmente abbastanza ovvio come numero esadecimale. 71 00:03:54,642 --> 00:03:56,350 Ma, ancora, per la motivi di chiarezza, è 72 00:03:56,350 --> 00:03:58,290 sempre una buona idea prefisso ogni volta che si 73 00:03:58,290 --> 00:04:01,835 fare riferimento a una cifra come esadecimale numero anteponendo un 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Quindi, binaria, come abbiamo Detto questo, ha valori posto. 76 00:04:06,810 --> 00:04:10,040 C'è il luogo quelli, un posto due, un posto a quattro zampe, e un posto otto. 77 00:04:10,040 --> 00:04:13,640 E decimale ha anche posto dei valori, i quelli, decine, centinaia, e migliaia 78 00:04:13,640 --> 00:04:15,910 che tutti noi può ricordare dalla scuola elementare. 79 00:04:15,910 --> 00:04:18,050 Ed esadecimale non è eccezione qui, davvero. 80 00:04:18,050 --> 00:04:22,660 Ha anche posto dei valori, ma invece di essere potenze di 2 o potenze di 10, 81 00:04:22,660 --> 00:04:25,050 sono potenze di 16. 82 00:04:25,050 --> 00:04:29,410 >> Così vediamo un numero come questo noi sa abbastanza chiaramente che è 397, giusto? 83 00:04:29,410 --> 00:04:33,420 Beh, se si vede un numero come questo, sappiamo che questo non è più 397. 84 00:04:33,420 --> 00:04:36,730 Questo è l'esadecimale numero di tre 9-7. 85 00:04:36,730 --> 00:04:39,680 Non è 397, significa qualcosa di diverso, 86 00:04:39,680 --> 00:04:44,180 perché stiamo usando poteri di 16, come tutti dei nostri valori luogo invece di poteri 87 00:04:44,180 --> 00:04:45,560 di 10. 88 00:04:45,560 --> 00:04:50,570 Infatti, i valori posto qui sarebbe essere il posto quelle, il luogo sixteens, 89 00:04:50,570 --> 00:04:55,080 e il luogo di duecento cinquanta sei, che corrispondono alla nostra idea di un quelli 90 00:04:55,080 --> 00:04:59,180 luogo, decine luogo, e un centinaio posto, se il numero era 397. 91 00:04:59,180 --> 00:05:03,620 Ma poiché è 0x 397, abbiamo un luogo, quelli sixteens posto, 92 00:05:03,620 --> 00:05:05,780 e un luogo di duecento cinquanta sei. 93 00:05:05,780 --> 00:05:09,460 Oppure, un 16 al 0 posto, che è 1. 94 00:05:09,460 --> 00:05:12,420 A 16 al primo posto alimentazione, 16. 95 00:05:12,420 --> 00:05:17,080 A 16 quadrati posto, 256, e così via, e così via, e così via. 96 00:05:17,080 --> 00:05:24,400 Quindi questo numero è davvero 3 volte 16 quadrato, più 9 volte 16, più 7. 97 00:05:24,400 --> 00:05:28,980 Non ho fatto la matematica qui, ma non è 397, è molto, molto più grande di quello. 98 00:05:28,980 --> 00:05:34,050 >> Allo stesso modo, potremmo avere ADC 0x, bene che è un 16 volte al quadrato. 99 00:05:34,050 --> 00:05:38,220 Oppure, se traduciamo che alla nostra nozione di numeri decimali, che è 10 volte 100 00:05:38,220 --> 00:05:44,160 16 quadrati, più d volte 16 o più 13 volte 16. 101 00:05:44,160 --> 00:05:47,410 E non preoccupatevi se non avete memorizzato che d è 13, o qualcosa di simile, 102 00:05:47,410 --> 00:05:49,201 Non ci sono troppi di queste cifre lettera 103 00:05:49,201 --> 00:05:52,820 e diventerà intuitiva abbastanza rapidamente. 104 00:05:52,820 --> 00:05:59,800 Così ancora una volta questo è 10 volte 16 al quadrato, oltre 13 volte 16, oltre 12 volte 1. 105 00:05:59,800 --> 00:06:03,640 ADC così 0x. 106 00:06:03,640 --> 00:06:07,750 >> Quindi, come ho detto, ogni gruppo di 4 cifre binarie 107 00:06:07,750 --> 00:06:10,000 corrisponde ad una singola cifra esadecimale, 108 00:06:10,000 --> 00:06:12,570 e così in realtà è davvero facile cambiare avanti e indietro 109 00:06:12,570 --> 00:06:14,690 tra esadecimale e binario. 110 00:06:14,690 --> 00:06:18,310 Se si dispone di questa lunga serie di cifre binarie, tutto quello che dovete fare 111 00:06:18,310 --> 00:06:21,320 è iniziare a raggruppare nel modo giusto a sinistra come gruppi di 4. 112 00:06:21,320 --> 00:06:26,550 E poi è possibile consolidare li in numeri esadecimali, 113 00:06:26,550 --> 00:06:30,910 limitando fortemente il numero di CIFRE è necessario elaborare mentalmente. 114 00:06:30,910 --> 00:06:33,680 Invece di 32 0 e di 1, come vedremo in un secondo, 115 00:06:33,680 --> 00:06:37,630 si potrebbe essere in grado di ottenere in giù a soli 8 cifre esadecimali, un sacco 116 00:06:37,630 --> 00:06:39,200 più concisa. 117 00:06:39,200 --> 00:06:43,500 >> I grafici alcune diapositive ritorno si vi aiuti a capire questa mappatura, 118 00:06:43,500 --> 00:06:45,660 anche se, ancora una volta avrete memorizzarlo abbastanza rapidamente. 119 00:06:45,660 --> 00:06:47,320 Andremo attraverso un esempio in questo momento. 120 00:06:47,320 --> 00:06:51,507 Quindi, se abbiamo un numero come questo, davvero grande numero binario, 121 00:06:51,507 --> 00:06:53,340 o quello che sembra essere un gran numero binario. 122 00:06:53,340 --> 00:06:56,260 E la ragione per cui dico questo, è solo so-- è un colosso, giusto? 123 00:06:56,260 --> 00:06:58,959 Ci sono così tanti di 0 e 1 di lì. 124 00:06:58,959 --> 00:07:01,000 Ma probabilmente non lo facciamo davvero un senso di ciò che 125 00:07:01,000 --> 00:07:02,870 la grandezza di questo numero è davvero. 126 00:07:02,870 --> 00:07:06,150 Non abbiamo idea di cosa corrisponderebbe ad un decimale. 127 00:07:06,150 --> 00:07:09,744 E infatti non ci nemmeno vedere che cosa corrisponde al decimale in questo momento. 128 00:07:09,744 --> 00:07:11,660 Potremmo essere in grado di esprimere questo in un modo che 129 00:07:11,660 --> 00:07:15,640 ci darebbe qualche informazione in più su quanto sia grande questo numero è. 130 00:07:15,640 --> 00:07:17,270 >> Così andiamo a quel processo di conversione. 131 00:07:17,270 --> 00:07:19,311 La prima cosa che dobbiamo di fare è che vogliamo gruppo 132 00:07:19,311 --> 00:07:23,050 queste cifre in gruppi 4, partendo da destra 133 00:07:23,050 --> 00:07:24,120 e lavorando a sinistra. 134 00:07:24,120 --> 00:07:27,260 Ci capita di essere 32 cifre qui, il che significa che abbiamo 135 00:07:27,260 --> 00:07:33,210 un bel taglio netto di 8 gruppi di 4. 136 00:07:33,210 --> 00:07:36,200 Ricordate che ogni gruppo di 4 qui, unicamente corrisponde 137 00:07:36,200 --> 00:07:37,760 ad una cifra esadecimale. 138 00:07:37,760 --> 00:07:42,080 Quindi inizieremo di nuovo a costruire la nostra il numero da destra e sinistra working. 139 00:07:42,080 --> 00:07:44,890 Beh, cosa c'è di 1101? 140 00:07:44,890 --> 00:07:49,220 Beh, facciamo la matematica nella nostra testa, abbiamo 1 nel posto otto, un 1 141 00:07:49,220 --> 00:07:54,310 collocati quattro, uno 0 nella twos posto, e un 1 al posto quelli. 142 00:07:54,310 --> 00:07:58,820 Ecco 8 più 4 più 1, che noi sapremmo come 13. 143 00:07:58,820 --> 00:08:02,400 Ma probabilmente non avremmo scrivere 13 fuori, perché stiamo lavorando con esadecimale. 144 00:08:02,400 --> 00:08:07,982 Abbiamo bisogno di convertirlo in esadecimale equivalente di 13, che è d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, bene che è uno 0 nella posto otto, uno 0 nella fours posto, 146 00:08:12,940 --> 00:08:15,190 un 1 nel luogo due, e un 1 al posto quelli. 147 00:08:15,190 --> 00:08:16,880 Ecco 3. 148 00:08:16,880 --> 00:08:20,180 Intendo continuare a fare questo ancora una volta, abbiamo qui 9. 149 00:08:20,180 --> 00:08:23,850 E poi 11, ma questo è b, richiamo. 150 00:08:23,850 --> 00:08:30,570 2, 10-- o a-- 6, e 4. 151 00:08:30,570 --> 00:08:34,669 E perché molto grande corda di 0 e 1 di del top 152 00:08:34,669 --> 00:08:38,549 è più conciso espresso in esadecimale come 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Bene, bene, abbiamo imparato un nuovo abilità fresco, qual è il punto? 155 00:08:45,870 --> 00:08:49,560 Potremmo non utilizzare questo tutto il tempo, come andremo a vedere presto, 156 00:08:49,560 --> 00:08:52,370 usiamo esadecimale abbastanza molto come i programmatori. 157 00:08:52,370 --> 00:08:55,060 Non necessariamente per la scopo di fare matematica con esso, 158 00:08:55,060 --> 00:08:58,470 ma perché molte volte indirizzi di memoria del nostro sistema 159 00:08:58,470 --> 00:09:00,440 sono rappresentati in esadecimale. 160 00:09:00,440 --> 00:09:04,390 E 'un modo davvero conciso per esprimere altrimenti ingombranti, numeri binari. 161 00:09:04,390 --> 00:09:06,440 E così, ancora una volta, si può not-- probabilmente siete 162 00:09:06,440 --> 00:09:07,640 non andare a fare qualsiasi matematica con essa, non si è 163 00:09:07,640 --> 00:09:09,848 sta per essere moltiplicando numeri esadecimali insieme, 164 00:09:09,848 --> 00:09:11,770 o fare qualcosa di strano in quel modo. 165 00:09:11,770 --> 00:09:16,120 Ma è una capacità utile avere in modo da poter esprimere e capire 166 00:09:16,120 --> 00:09:23,290 Memoria indirizzi e altre modi di utilizzo dei dati in C. 167 00:09:23,290 --> 00:09:26,240 >> Sono Doug Lloyd, questo è CS50. 168 00:09:26,240 --> 00:09:28,028