Doug LLYOYD: Pa heksadecimalni brojevi, kao da mi je potrebno još osnovni broj Shema pravo? Pa, većina zapadne kulture, kao što ste vjerojatno upoznati, koristite decimalnu system-- baze 10, za zastupanje brojčane podatke. Imamo znamenke 0, 1, 2, 3, 5, 6, 7,8,9. A ako nam je potrebno za zastupanje vrijednosti veće od devet, možemo kombinirati one znamenke pomoću pojam mjestu vrijednosti. Tako je za 10, imamo 1 znamenkasti slijedi znamenku 0 a mi intuitivno razumijemo da je ono što radimo nema mi množenjem prvi 1, 10, a zatim dodavanjem 0 za ukupno 10. Računala učiniti nešto lijepo slično, kao što ste vjerojatno upoznati, s binarnom system-- bazi 2. Razlika postoji bitak da postoje samo 2 znamenke raditi with-- 0 i 1. I tako naše mjesto vrijednosti, umjesto da bude jedan, deset, stotinu, tisuću, kao što su će biti u decimalnom sustavu, jedan, dva, četiri, osam, i tako dalje. Ovdje je stvar ipak, one 0-ih i 1, osobito ako mi se računalo znanstvenike i radimo puno programiranja ili rade s računalima, bili su idući da vidim puno binarnih brojeva. A oni 0 a i 1 je u velikim lancima može biti vrlo teško analizirati. Ne možemo samo gledati na nizu 0-a i 1 i nužno znati točno što je to. Ali to je još uvijek vrlo korisno moći Express podataka na isti način da računalo radi. Imamo taj pojam heksadecimalni sustav, koji je baza 16, umjesto baze 10 ili bazne 2. Što znači da imamo 16 znamenki raditi umjesto 10 ili 2. I to je puno više koncizan način izraziti binarna informacija o računalnom sustavu, to je mnogo više ljudi razumljivo. Dakle, imamo znamenke 0 do 9, a potom imamo i ove dodatne šest digits-- je, b, c, d, e, f i, što predstavlja 10, naš pojam 10, 11, 12, 13, 14 i 15, u decimale. Ponekad, usput, također ćete vidi ove A do F-ih kao glavnog A F, kroz koji je način i imaju tendenciju da to učinite. To je samo moj poželjna stil, ali bilo je u redu, obojica predstavljaju prilično koliko ista stvar. Pa zašto je heksadecimalni kul? Zašto nam je potrebna za korištenje ove kakve dodatne baze? Već smo 2 i 10, zašto nam je potrebna 16? Pa 16 je moć 2, i tako svaki heksadecimalni znamenkasti, 0 do f, odgovara jedinstveni naručivanja, ili jedinstveni aranžman 4 binarnih znamenki, 4 bita. I tako u tom smislu, možemo izraziti jako dugo, složeni, binarni brojevi u heksadecimalnom je u mnogo više sažet način, bez gubitka podataka ili da to osobito težak pretvorbi na tim brojevima. Dakle, kao što sam rekao, svaki heksadecimalni znamenkasti odgovara jedinstveni raspored 4 binarnih znamenki. Dakle binarnom nizu 0000 odgovara heksadecimalnom znamenkom 0. 0110 odgovara heksadecimalnom znamenkom 6. I 1111 odgovara da heksadecimalnom znamenki f. Ako ste u potrazi na Ovaj grafikon, osobito ako ste gledajući lijeva strana dijagrama, već možete vidjeti da je Malo je dvosmislenosti problema ovdje. Decimalni 0 je prilično mnogo ne razlikuje od heksadecimalni 0, osim činjenice da je pod stupac koji govori heksadecimalni. Ali mi vjerojatno neće uvijek imati taj stupac tamo. Općenito, kada smo se izražava Brojevi u heksadecimalni zapis jasno razlučiti ih od decimalnog zapisa, obično ih prefiks s prefiksom 0x. 0x znači ništa u stvarnosti, to je samo znak da nas kao ljude da je ono što smo o kojem se priča, ili oko za početak raščlanjivanja, je broj heksadecimalni. Očito za više znamenki a, b, c, d i f, koji odgovaraju 10-15 to je prilično nedvosmisleno da je to je broj heksadecimalni. A u stvari, bilo heksadecimalni broj koji ima slova u njoj, je vjerojatno prilično očito kao heksadecimalni broj. No, ipak, za Radi jasnoće, to je uvijek dobra ideja da prefiks svaki put kada odnose se brojkom kao heksadecimalni Broj od prefixing je 0x. Dakle, binarni, kao što smo rekao je, ima mjesta vrijednosti. Tu je ona mjesto, dvojke mjesto, četvorke mjesto, a Mau mjesto. I decimale ima mjestom vrijednosti, one, desetke, stotine i tisuće da mi svi mogu sjetiti iz razreda škole. I heksadecimalni nema Izuzetak ovdje, stvarno. Ona također ima mjestom vrijednosti ali umjesto da su ovlasti od 2 ili ovlasti 10, oni su ovlasti 16. Tako smo vidjeti broj kao što je ovaj mi prilično jasno znam da je 397, zar ne? Pa ako ćemo vidjeti broj ovako, znamo da to nije 397 više. To je heksadecimalni Broj tri do devet i sedam godina. To nije 397, to znači nešto drugo, zato što smo koristeći ovlasti 16 kao i svi našeg mjesta vrijednosti umjesto ovlasti od 10. U stvari, mjesta vrijednosti ovdje bi biti one mjesto, sixteens mjesto, i dvjesto pedeset šestice mjesto, koja odgovaraju našem ideji one mjesto, deseci mjesto, i još stotine mjesto, ako je broj bio 397. No, budući da je 0x 397, imamo moji mjesto, sixteens mjesto, i dvjesto pedeset šestice mjesto. Ili, 16 do 0 mjesta, što je 1. 16-do prvog mjesta, snage 16. 16-squared mjesto, 256 i tako dalje, i tako dalje, i tako dalje. Dakle, taj broj je zapravo 3 puta 16 kvadrat, plus 9 puta 16 plus 7. Nisam učiniti math ovdje, ali to nije 397, to je mnogo, mnogo veći od toga. Isto tako, mogli bismo imati 0x ADC, dobro to je vrijeme 16 kvadrata. Ili, ako prevodimo da se naše ideje decimalnih brojeva, to je 10 puta 16 kvadrat, plus d puta 16, odnosno plus 13 puta 16. I ne brinite ako niste napamet da je d 13, ili nešto slično, nema ih previše tih slova brojkama i to će postati intuitivno prilično brzo. Dakle, opet je to 10 puta 16 na kvadrat, plus 13 puta 16, plus 12 puta 1. Tako 0x ADC. Dakle, kao što sam rekao, svaki Skupina 4 binarnih znamenki odgovara jedan heksadecimalni znamenkasti, pa to je zapravo jako lako promijeniti i natrag između hex i binarnom. Ako imate ovaj dugi niz binarne znamenke, sve što trebate učiniti je početi ih grupiranje u redu na lijevo kao skupina 4. A onda možete objediniti ih u heksadecimalni brojevi, ozbiljno ograničavaju broj znamenke morate obraditi psihički. Umjesto 32 0-a i 1-a, kao što ćemo vidjeti u drugom, možda ćete biti u mogućnosti da biste dobili dolje za samo 8 heksadecimalni brojkama, mnogo više koncizan. Dijagrami nekoliko uvlači će vam pomoći shvatiti ovaj mapiranje, iako, opet ćete se zapamtite to prilično brzo. Ići ćemo kroz primjer upravo sada. Dakle, ako imamo broj kao što je ovaj, ovo je stvarno veliki binarni broj, ili ono što se čini veliki binarni broj. A razlog zbog kojeg sam reći da, to je Samo so-- to je ogromna, zar ne? Postoji toliko mnogo 0-ih i 1 je tamo. Ali mi vjerojatno ne stvarno imaju osjećaj za ono što Veličina tog broja je stvarno. Nemamo pojma što ga odgovarala bi decimale. A u stvari nećemo ni vidjeti što je to odgovara na decimale upravo sada. Možda ćemo moći izraziti na način da će nam dati više informacija samo o tome kako veliki taj broj. Dakle, idemo u tom procesu pretvorbe. Prva stvar koju trebamo učiniti je želimo skupini ove znamenki van u skupinama 4, počevši od desne i rad na lijevo. Tu se dogoditi da se 32 znamenki ovdje, što znači da imamo lijep čist pauze od 8 skupina od 4. Ne zaboravite da svaku grupu 4 Ovdje, jedinstveno odgovara u heksadecimalnom znamenkom. Tako ćemo ponovno početi izgradnju naše broj s desne strane i radi otišao. Pa što je 1101? Pa ćemo učiniti math u našoj glavi, imamo 1 u osmica mjestu, 1 u četiri mjesto, 0 u paru mjesto, a 1. u one mjestu. To je 8 plus 4 plus 1, koji bi znali kako je 13. Ali mi vjerojatno ne bi napisati u 13, jer radimo s heksadecimalnom. Moramo ga pretvoriti u heksadecimalnom ekvivalent 13, koji je d. 0011, i to je 0 u Mau mjesto, 0 u četiri mjesta, A1 u parovima mjestu, i 1 u one mjestu. To je 3. Mislim bi to Ponovno, ovdje imamo 9. I onda 11, ali to je b, opoziv. 2, 10-- ili A- 6 i 4. I tako da vrlo veliki niz od 0 a i 1-tih na vrh je više sažeto izrazio u heksadecimalnom obliku 0x 46a2b93d. Pa, u redu, naučili smo novi kul vještina, što je točka? Mi ne bi mogli koristiti sve ovo Vrijeme, kao idemo uskoro vidjeti, koristimo dosta heksadecimalni mnogo kao programera. Ne nužno za Svrha radiš matematiku s njim, ali zato puno puta memorijske adrese u našem sustavu su zastupljeni u heksadecimalnom. To je zapravo sažet način izraziti inače težak, binarni brojevi. I tako, opet, vi svibanj not-- vjerojatno ste neće učiniti bilo matematiku Uz to, nisu će biti množenjem heksadecimalni brojevi zajedno, ili radiš ništa čudno kao što je to. Ali, to je korisna vještina imati tako da možete izraziti i razumjeti memorije adrese i druge načini pomoću podataka u C. Ja sam Doug Lloyd, ovo je CS50.