1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 Doug LLYOYD: Pa heksadecimalni brojevi, kao da mi je potrebno još osnovni broj 3 00:00:08,510 --> 00:00:09,970 Shema pravo? 4 00:00:09,970 --> 00:00:13,000 Pa, većina zapadne kulture, kao što ste vjerojatno upoznati, 5 00:00:13,000 --> 00:00:16,560 koristite decimalnu system-- baze 10, za zastupanje brojčane podatke. 6 00:00:16,560 --> 00:00:20,520 Imamo znamenke 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 A ako nam je potrebno za zastupanje vrijednosti veće od devet, 8 00:00:23,890 --> 00:00:26,800 možemo kombinirati one znamenke pomoću pojam mjestu vrijednosti. 9 00:00:26,800 --> 00:00:30,115 Tako je za 10, imamo 1 znamenkasti slijedi znamenku 0 10 00:00:30,115 --> 00:00:32,240 a mi intuitivno razumijemo da je ono što radimo 11 00:00:32,240 --> 00:00:35,500 nema mi množenjem prvi 1, 10, 12 00:00:35,500 --> 00:00:37,689 a zatim dodavanjem 0 za ukupno 10. 13 00:00:37,689 --> 00:00:40,480 Računala učiniti nešto lijepo slično, kao što ste vjerojatno upoznati, 14 00:00:40,480 --> 00:00:42,409 s binarnom system-- bazi 2. 15 00:00:42,409 --> 00:00:44,700 Razlika postoji bitak da postoje samo 2 znamenke 16 00:00:44,700 --> 00:00:46,770 raditi with-- 0 i 1. 17 00:00:46,770 --> 00:00:49,033 I tako naše mjesto vrijednosti, umjesto da bude jedan, 18 00:00:49,033 --> 00:00:52,600 deset, stotinu, tisuću, kao što su će biti u decimalnom sustavu, 19 00:00:52,600 --> 00:00:57,690 jedan, dva, četiri, osam, i tako dalje. 20 00:00:57,690 --> 00:01:00,842 Ovdje je stvar ipak, one 0-ih i 1, osobito 21 00:01:00,842 --> 00:01:03,800 ako mi se računalo znanstvenike i radimo puno programiranja 22 00:01:03,800 --> 00:01:06,924 ili rade s računalima, bili su idući da vidim puno binarnih brojeva. 23 00:01:06,924 --> 00:01:11,660 A oni 0 a i 1 je u velikim lancima može biti vrlo teško analizirati. 24 00:01:11,660 --> 00:01:16,610 Ne možemo samo gledati na nizu 0-a i 1 i nužno znati 25 00:01:16,610 --> 00:01:17,810 točno što je to. 26 00:01:17,810 --> 00:01:21,980 Ali to je još uvijek vrlo korisno moći Express podataka na isti način 27 00:01:21,980 --> 00:01:23,480 da računalo radi. 28 00:01:23,480 --> 00:01:26,580 Imamo taj pojam heksadecimalni sustav, koji je 29 00:01:26,580 --> 00:01:29,840 baza 16, umjesto baze 10 ili bazne 2. 30 00:01:29,840 --> 00:01:34,420 Što znači da imamo 16 znamenki raditi umjesto 10 ili 2. 31 00:01:34,420 --> 00:01:37,180 I to je puno više koncizan način izraziti 32 00:01:37,180 --> 00:01:41,210 binarna informacija o računalnom sustavu, to je mnogo više ljudi razumljivo. 33 00:01:41,210 --> 00:01:43,520 Dakle, imamo znamenke 0 do 9, a potom 34 00:01:43,520 --> 00:01:49,480 imamo i ove dodatne šest digits-- je, b, c, d, e, f i, što predstavlja 10, 35 00:01:49,480 --> 00:01:56,050 naš pojam 10, 11, 12, 13, 14 i 15, u decimale. 36 00:01:56,050 --> 00:01:59,787 Ponekad, usput, također ćete vidi ove A do F-ih kao glavnog A 37 00:01:59,787 --> 00:02:01,620 F, kroz koji je način i imaju tendenciju da to učinite. 38 00:02:01,620 --> 00:02:04,560 To je samo moj poželjna stil, ali bilo je u redu, 39 00:02:04,560 --> 00:02:07,870 obojica predstavljaju prilično koliko ista stvar. 40 00:02:07,870 --> 00:02:09,090 >> Pa zašto je heksadecimalni kul? 41 00:02:09,090 --> 00:02:11,580 Zašto nam je potrebna za korištenje ove kakve dodatne baze? 42 00:02:11,580 --> 00:02:14,310 Već smo 2 i 10, zašto nam je potrebna 16? 43 00:02:14,310 --> 00:02:21,650 Pa 16 je moć 2, i tako svaki heksadecimalni znamenkasti, 0 do f, 44 00:02:21,650 --> 00:02:25,440 odgovara jedinstveni naručivanja, ili jedinstveni aranžman 45 00:02:25,440 --> 00:02:29,060 4 binarnih znamenki, 4 bita. 46 00:02:29,060 --> 00:02:34,570 I tako u tom smislu, možemo izraziti jako dugo, složeni, binarni brojevi 47 00:02:34,570 --> 00:02:36,440 u heksadecimalnom je u mnogo više sažet način, 48 00:02:36,440 --> 00:02:41,080 bez gubitka podataka ili da to osobito težak pretvorbi 49 00:02:41,080 --> 00:02:42,480 na tim brojevima. 50 00:02:42,480 --> 00:02:44,880 >> Dakle, kao što sam rekao, svaki heksadecimalni znamenkasti 51 00:02:44,880 --> 00:02:48,630 odgovara jedinstveni raspored 4 binarnih znamenki. 52 00:02:48,630 --> 00:02:53,670 Dakle binarnom nizu 0000 odgovara heksadecimalnom znamenkom 0. 53 00:02:53,670 --> 00:03:00,340 0110 odgovara heksadecimalnom znamenkom 6. 54 00:03:00,340 --> 00:03:05,225 I 1111 odgovara da heksadecimalnom znamenki f. 55 00:03:05,225 --> 00:03:07,100 Ako ste u potrazi na Ovaj grafikon, osobito 56 00:03:07,100 --> 00:03:09,099 ako ste gledajući lijeva strana dijagrama, 57 00:03:09,099 --> 00:03:11,970 već možete vidjeti da je Malo je dvosmislenosti problema ovdje. 58 00:03:11,970 --> 00:03:15,229 Decimalni 0 je prilično mnogo ne razlikuje od heksadecimalni 0, 59 00:03:15,229 --> 00:03:18,020 osim činjenice da je pod stupac koji govori heksadecimalni. 60 00:03:18,020 --> 00:03:22,130 >> Ali mi vjerojatno neće uvijek imati taj stupac tamo. 61 00:03:22,130 --> 00:03:25,420 Općenito, kada smo se izražava Brojevi u heksadecimalni zapis 62 00:03:25,420 --> 00:03:28,130 jasno razlučiti ih od decimalnog zapisa, 63 00:03:28,130 --> 00:03:31,860 obično ih prefiks s prefiksom 0x. 64 00:03:31,860 --> 00:03:35,990 0x znači ništa u stvarnosti, to je samo znak da nas kao ljude 65 00:03:35,990 --> 00:03:39,190 da je ono što smo o kojem se priča, ili oko za početak raščlanjivanja, 66 00:03:39,190 --> 00:03:40,750 je broj heksadecimalni. 67 00:03:40,750 --> 00:03:45,590 Očito za više znamenki a, b, c, d i f, koji odgovaraju 10-15 68 00:03:45,590 --> 00:03:48,840 to je prilično nedvosmisleno da je to je broj heksadecimalni. 69 00:03:48,840 --> 00:03:51,620 A u stvari, bilo heksadecimalni broj koji ima slova u njoj, 70 00:03:51,620 --> 00:03:54,642 je vjerojatno prilično očito kao heksadecimalni broj. 71 00:03:54,642 --> 00:03:56,350 No, ipak, za Radi jasnoće, to je 72 00:03:56,350 --> 00:03:58,290 uvijek dobra ideja da prefiks svaki put kada 73 00:03:58,290 --> 00:04:01,835 odnose se brojkom kao heksadecimalni Broj od prefixing je 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Dakle, binarni, kao što smo rekao je, ima mjesta vrijednosti. 76 00:04:06,810 --> 00:04:10,040 Tu je ona mjesto, dvojke mjesto, četvorke mjesto, a Mau mjesto. 77 00:04:10,040 --> 00:04:13,640 I decimale ima mjestom vrijednosti, one, desetke, stotine i tisuće 78 00:04:13,640 --> 00:04:15,910 da mi svi mogu sjetiti iz razreda škole. 79 00:04:15,910 --> 00:04:18,050 I heksadecimalni nema Izuzetak ovdje, stvarno. 80 00:04:18,050 --> 00:04:22,660 Ona također ima mjestom vrijednosti ali umjesto da su ovlasti od 2 ili ovlasti 10, 81 00:04:22,660 --> 00:04:25,050 oni su ovlasti 16. 82 00:04:25,050 --> 00:04:29,410 >> Tako smo vidjeti broj kao što je ovaj mi prilično jasno znam da je 397, zar ne? 83 00:04:29,410 --> 00:04:33,420 Pa ako ćemo vidjeti broj ovako, znamo da to nije 397 više. 84 00:04:33,420 --> 00:04:36,730 To je heksadecimalni Broj tri do devet i sedam godina. 85 00:04:36,730 --> 00:04:39,680 To nije 397, to znači nešto drugo, 86 00:04:39,680 --> 00:04:44,180 zato što smo koristeći ovlasti 16 kao i svi našeg mjesta vrijednosti umjesto ovlasti 87 00:04:44,180 --> 00:04:45,560 od 10. 88 00:04:45,560 --> 00:04:50,570 U stvari, mjesta vrijednosti ovdje bi biti one mjesto, sixteens mjesto, 89 00:04:50,570 --> 00:04:55,080 i dvjesto pedeset šestice mjesto, koja odgovaraju našem ideji one 90 00:04:55,080 --> 00:04:59,180 mjesto, deseci mjesto, i još stotine mjesto, ako je broj bio 397. 91 00:04:59,180 --> 00:05:03,620 No, budući da je 0x 397, imamo moji mjesto, sixteens mjesto, 92 00:05:03,620 --> 00:05:05,780 i dvjesto pedeset šestice mjesto. 93 00:05:05,780 --> 00:05:09,460 Ili, 16 do 0 mjesta, što je 1. 94 00:05:09,460 --> 00:05:12,420 16-do prvog mjesta, snage 16. 95 00:05:12,420 --> 00:05:17,080 16-squared mjesto, 256 i tako dalje, i tako dalje, i tako dalje. 96 00:05:17,080 --> 00:05:24,400 Dakle, taj broj je zapravo 3 puta 16 kvadrat, plus 9 puta 16 plus 7. 97 00:05:24,400 --> 00:05:28,980 Nisam učiniti math ovdje, ali to nije 397, to je mnogo, mnogo veći od toga. 98 00:05:28,980 --> 00:05:34,050 >> Isto tako, mogli bismo imati 0x ADC, dobro to je vrijeme 16 kvadrata. 99 00:05:34,050 --> 00:05:38,220 Ili, ako prevodimo da se naše ideje decimalnih brojeva, to je 10 puta 100 00:05:38,220 --> 00:05:44,160 16 kvadrat, plus d puta 16, odnosno plus 13 puta 16. 101 00:05:44,160 --> 00:05:47,410 I ne brinite ako niste napamet da je d 13, ili nešto slično, 102 00:05:47,410 --> 00:05:49,201 nema ih previše tih slova brojkama 103 00:05:49,201 --> 00:05:52,820 i to će postati intuitivno prilično brzo. 104 00:05:52,820 --> 00:05:59,800 Dakle, opet je to 10 puta 16 na kvadrat, plus 13 puta 16, plus 12 puta 1. 105 00:05:59,800 --> 00:06:03,640 Tako 0x ADC. 106 00:06:03,640 --> 00:06:07,750 >> Dakle, kao što sam rekao, svaki Skupina 4 binarnih znamenki 107 00:06:07,750 --> 00:06:10,000 odgovara jedan heksadecimalni znamenkasti, 108 00:06:10,000 --> 00:06:12,570 pa to je zapravo jako lako promijeniti i natrag 109 00:06:12,570 --> 00:06:14,690 između hex i binarnom. 110 00:06:14,690 --> 00:06:18,310 Ako imate ovaj dugi niz binarne znamenke, sve što trebate učiniti 111 00:06:18,310 --> 00:06:21,320 je početi ih grupiranje u redu na lijevo kao skupina 4. 112 00:06:21,320 --> 00:06:26,550 A onda možete objediniti ih u heksadecimalni brojevi, 113 00:06:26,550 --> 00:06:30,910 ozbiljno ograničavaju broj znamenke morate obraditi psihički. 114 00:06:30,910 --> 00:06:33,680 Umjesto 32 0-a i 1-a, kao što ćemo vidjeti u drugom, 115 00:06:33,680 --> 00:06:37,630 možda ćete biti u mogućnosti da biste dobili dolje za samo 8 heksadecimalni brojkama, mnogo 116 00:06:37,630 --> 00:06:39,200 više koncizan. 117 00:06:39,200 --> 00:06:43,500 >> Dijagrami nekoliko uvlači će vam pomoći shvatiti ovaj mapiranje, 118 00:06:43,500 --> 00:06:45,660 iako, opet ćete se zapamtite to prilično brzo. 119 00:06:45,660 --> 00:06:47,320 Ići ćemo kroz primjer upravo sada. 120 00:06:47,320 --> 00:06:51,507 Dakle, ako imamo broj kao što je ovaj, ovo je stvarno veliki binarni broj, 121 00:06:51,507 --> 00:06:53,340 ili ono što se čini veliki binarni broj. 122 00:06:53,340 --> 00:06:56,260 A razlog zbog kojeg sam reći da, to je Samo so-- to je ogromna, zar ne? 123 00:06:56,260 --> 00:06:58,959 Postoji toliko mnogo 0-ih i 1 je tamo. 124 00:06:58,959 --> 00:07:01,000 Ali mi vjerojatno ne stvarno imaju osjećaj za ono što 125 00:07:01,000 --> 00:07:02,870 Veličina tog broja je stvarno. 126 00:07:02,870 --> 00:07:06,150 Nemamo pojma što ga odgovarala bi decimale. 127 00:07:06,150 --> 00:07:09,744 A u stvari nećemo ni vidjeti što je to odgovara na decimale upravo sada. 128 00:07:09,744 --> 00:07:11,660 Možda ćemo moći izraziti na način da 129 00:07:11,660 --> 00:07:15,640 će nam dati više informacija samo o tome kako veliki taj broj. 130 00:07:15,640 --> 00:07:17,270 >> Dakle, idemo u tom procesu pretvorbe. 131 00:07:17,270 --> 00:07:19,311 Prva stvar koju trebamo učiniti je želimo skupini 132 00:07:19,311 --> 00:07:23,050 ove znamenki van u skupinama 4, počevši od desne 133 00:07:23,050 --> 00:07:24,120 i rad na lijevo. 134 00:07:24,120 --> 00:07:27,260 Tu se dogoditi da se 32 znamenki ovdje, što znači da imamo 135 00:07:27,260 --> 00:07:33,210 lijep čist pauze od 8 skupina od 4. 136 00:07:33,210 --> 00:07:36,200 Ne zaboravite da svaku grupu 4 Ovdje, jedinstveno odgovara 137 00:07:36,200 --> 00:07:37,760 u heksadecimalnom znamenkom. 138 00:07:37,760 --> 00:07:42,080 Tako ćemo ponovno početi izgradnju naše broj s desne strane i radi otišao. 139 00:07:42,080 --> 00:07:44,890 Pa što je 1101? 140 00:07:44,890 --> 00:07:49,220 Pa ćemo učiniti math u našoj glavi, imamo 1 u osmica mjestu, 1 141 00:07:49,220 --> 00:07:54,310 u četiri mjesto, 0 u paru mjesto, a 1. u one mjestu. 142 00:07:54,310 --> 00:07:58,820 To je 8 plus 4 plus 1, koji bi znali kako je 13. 143 00:07:58,820 --> 00:08:02,400 Ali mi vjerojatno ne bi napisati u 13, jer radimo s heksadecimalnom. 144 00:08:02,400 --> 00:08:07,982 Moramo ga pretvoriti u heksadecimalnom ekvivalent 13, koji je d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, i to je 0 u Mau mjesto, 0 u četiri mjesta, 146 00:08:12,940 --> 00:08:15,190 A1 u parovima mjestu, i 1 u one mjestu. 147 00:08:15,190 --> 00:08:16,880 To je 3. 148 00:08:16,880 --> 00:08:20,180 Mislim bi to Ponovno, ovdje imamo 9. 149 00:08:20,180 --> 00:08:23,850 I onda 11, ali to je b, opoziv. 150 00:08:23,850 --> 00:08:30,570 2, 10-- ili A- 6 i 4. 151 00:08:30,570 --> 00:08:34,669 I tako da vrlo veliki niz od 0 a i 1-tih na vrh 152 00:08:34,669 --> 00:08:38,549 je više sažeto izrazio u heksadecimalnom obliku 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Pa, u redu, naučili smo novi kul vještina, što je točka? 155 00:08:45,870 --> 00:08:49,560 Mi ne bi mogli koristiti sve ovo Vrijeme, kao idemo uskoro vidjeti, 156 00:08:49,560 --> 00:08:52,370 koristimo dosta heksadecimalni mnogo kao programera. 157 00:08:52,370 --> 00:08:55,060 Ne nužno za Svrha radiš matematiku s njim, 158 00:08:55,060 --> 00:08:58,470 ali zato puno puta memorijske adrese u našem sustavu 159 00:08:58,470 --> 00:09:00,440 su zastupljeni u heksadecimalnom. 160 00:09:00,440 --> 00:09:04,390 To je zapravo sažet način izraziti inače težak, binarni brojevi. 161 00:09:04,390 --> 00:09:06,440 I tako, opet, vi svibanj not-- vjerojatno ste 162 00:09:06,440 --> 00:09:07,640 neće učiniti bilo matematiku Uz to, nisu 163 00:09:07,640 --> 00:09:09,848 će biti množenjem heksadecimalni brojevi zajedno, 164 00:09:09,848 --> 00:09:11,770 ili radiš ništa čudno kao što je to. 165 00:09:11,770 --> 00:09:16,120 Ali, to je korisna vještina imati tako da možete izraziti i razumjeti 166 00:09:16,120 --> 00:09:23,290 memorije adrese i druge načini pomoću podataka u C. 167 00:09:23,290 --> 00:09:26,240 >> Ja sam Doug Lloyd, ovo je CS50. 168 00:09:26,240 --> 00:09:28,028