DOUG LLYOYD: numere hexazecimale Deci, ca și cum aveam nevoie de un alt număr de bază sistem corect? Ei bine, cele mai multe culturi occidentale, cum probabil sunteți familiarizați, folosi baza system-- zecimal 10, pentru a reprezenta datele numerice. Avem cifre de la 0, 1, 2, 3, 5, 6, 7,8,9. Și dacă avem nevoie pentru a reprezenta valori mai mari decât nouă, putem combina aceste cifre folosind noțiunea de valoare loc. Deci, pentru 10, avem un 1 cifre, urmat de o cifră 0 și înțelegem intuitiv că ceea ce facem există suntem înmulțirea primul 1 cu 10, și apoi adăugarea 0 pentru un total de 10. Calculatoare face ceva destul de similare, cum esti, probabil, familiar, cu baza system-- binar 2. Diferența a fi că există doar 2 cifre să lucreze aplice: 0 și 1. Și astfel valorile noastre loc, în loc să fie unul, zece, sute, mii, deoarece acestea ar fi în sistemul zecimal, sunt una, două, patru, opt, și așa mai departe. Aici e un lucru, deși, aceste 0 și 1, in special dacă suntem oameni de stiinta de calculator și facem o mulțime de programare sau de lucru cu calculatoare, merg care urmează să fie văzut o mulțime de numere binare. Iar cei 0 și 1 de la mari lanțuri poate fi foarte dificil pentru a analiza. Nu putem uita doar la un șir de Lui 0 și 1 și știu neapărat exact ceea ce este. Dar este încă util să fie în măsură date Express în același mod că un calculator nu. Avem această noțiune de Sistemul hexazecimal, care este de bază 16, în loc de baza 10 sau de bază 2. Ceea ce înseamnă că avem 16 cifre pentru a lucra cu loc de 10 sau 2. Și este un mult mai mod concis de a exprima informații binare pe un sistem informatic, este mult mai ușor de înțeles uman. Așa că avem cifre 0 prin 9, și apoi avem, de asemenea acestea plus șase digits-- o, b, c, d, e, f și, care reprezintă 10, noțiunea noastră de 10, 11, 12, 13, 14 și 15, în zecimal. Uneori, de altfel, de asemenea, veți vedea aceste o prin F ar fi de capital A prin F, care este mod de am tendința să o fac. Este doar preferat meu stil, dar nici este bine, ambele reprezintă destul de cam același lucru. Deci, de ce este hexazecimal rece? De ce avem nevoie pentru a utiliza acest altă bază suplimentar? Avem deja 2 și 10, de ce avem nevoie de 16? Ei bine 16 este o putere de 2, și așa fiecare cifră hexazecimală, 0 prin f, corespunde unui unic comanda, sau aranjament unic de 4 cifre binare, 4 biți. Și astfel, în acest sens, putem exprima numere foarte lungi, complexe, binare în hexazecimal într-un mult mult mai concis, fără a pierde informații sau a fi nevoie să face conversii în special greoaie cu privire la aceste numere. Deci, așa cum am spus, fiecare cifră hexazecimală corespunde unui unic aranjament de 4 cifre binare. Deci șirul binar 0000 corespunde cifră hexazecimal 0. 0110 corespunde cifre hexazecimale 6. Și 1111 corespunde la cifre f hexazecimal. Dacă sunteți în căutarea la această diagramă, în special dacă sunteți în căutarea la din partea stanga a graficului, puteți vedea deja există un pic de o problemă ambiguitate aici. Zecimal 0 este destul de mult imposibil de distins de hexazecimal 0, în afară de faptul că este în conformitate cu o coloană care spune hexazecimal. Dar noi, probabil, nu va fi întotdeauna au coloana acolo. În general, atunci când ne exprimăm numere în notație hexazecimală pentru a distinge în mod clar le de la notația zecimală, De obicei le prefixul cu prefixul 0x. 0x nu înseamnă nimic, în realitate, este doar un indiciu pentru noi ca oameni că ceea ce suntem pe cale de a vedea, sau pe cale de a începe parsarea, este un număr hexazecimal. Evident pentru cifre superioare a, b, c, d, și f, care corespund la 10-15 e destul de lipsite de ambiguitate care este care este un număr hexazecimal. Și, de fapt, orice hexazecimal număr care are litere în ea, este, probabil, destul de evident ca număr hexazecimal. Dar, totuși, pentru Din motive de claritate, este întotdeauna o idee bună de a prefixul de fiecare dată când se referă la o cifră ca hexazecimal Numărul de prefixarea un 0x. Deci, binar, așa cum am a spus, are valori loc. Nu e locul celor, un loc câte două, un loc patru labe, și un loc optari. Și, de asemenea, valorile zecimală are loc, mei, zeci, sute, mii și ca noi toți să amintim de la școala primară. Și hexazecimal nu este excepție aici, într-adevăr. Ea are, de asemenea, valori loc, dar în loc de a fi puteri de 2 sau puteri de 10, acestea sunt puteri de 16. Deci, vom vedea un număr de genul asta ne cunosc destul de clar că e 397, nu? Ei bine, dacă vom vedea un număr de genul asta, știm acest lucru nu mai este 397. Aceasta este hexazecimal numărul trei de nouă șapte. Nu e 397, aceasta înseamnă ceva diferit, pentru că suntem folosind puterile 16 ca toate de valorile noastre loc în loc de competențe de 10. De fapt, valorile au loc aici ar fi locul celor, locul sixteens, și locul-200-50-șesari, care corespund ideea noastra de a celor loc, zeci loc, și o sute de loc, în cazul în care numărul a fost de 397. Dar din moment ce este 0x 397, avem un loc cele, sixteens loc, și un loc-200-50-șesari. Sau, un 16 la 0 rând, care este 1. Un 16 la primul loc de putere, 16. A 16 patrat loc, 256, și așa mai departe, și așa mai departe, și așa mai departe. Deci acest număr este într-adevăr de 3 ori 16 pătrat, plus 9 ori 16, plus 7. N-am făcut matematica aici, dar nu este 397, e mult, mult mai mare decât cel. În mod similar, am putea avea ADC 0x, bine că e un moment de 16 pătrat. Sau, dacă ne-am traduce ca la noțiunea noastră de numere zecimale, e de 10 ori 16 pătrat, plus ori d 16, sau 13 de ori, plus 16. Și nu vă faceți griji dacă nu ați memorat că d este de 13, sau ceva de genul asta, nu prea multe din aceste cifre scrisoare și-l va deveni intuitiv destul de repede. Deci, din nou acest lucru este de 10 ori 16 pătrat, plus 13 ori 16, plus 12 ori 1. ADC Deci 0x. Deci, cum am spus, fiecare grup de 4 cifre binare corespunde unei singure cifre hexazecimal, și așa este de fapt într-adevăr ușor de a schimba înainte și înapoi între hex și binar. Dacă aveți această lung șir de cifre binare, tot ce trebuie să faci este începe gruparea lor dreaptă la stânga ca grupuri de 4. Și apoi puteți consolida le în numere hexazecimale, limiteaza drastic numărul de cifre trebuie să proceseze mental. În loc de 32 0 și 1, a cum vom vedea într-o secundă, s-ar putea fi capabil să-l jos la doar 8 cifre hexazecimale, o mulțime mai concis. Graficele câteva slide-uri spate va ajuta să dau seama acest cartografiere, deși, din nou, veți memoreze o destul de repede. Vom merge printr-un exemplu, chiar acum. Deci, dacă avem un număr de genul asta, acest număr cu adevărat mare binar, sau ceea ce pare a fi un mare număr binar. Și motivul pentru care am spus asta, e doar deci-- este un gigant, nu? Există atât de multe 0 și 1 este acolo. Dar noi, probabil, nu au într-adevăr un sentiment de ceea ce amploarea acestui număr este cu adevărat. Noi nu avem nici o idee despre ceea ce se ar corespunde unei zecimală. Și, de fapt nici măcar nu vom vedea ce corespunde în zecimal acum. S-ar putea fi în măsură să exprima într-un mod care ne-ar da mai multe informatii despre cât de mare este acest număr. Deci, haideți să mergem la acest proces de conversie. Primul lucru pe care avem nevoie să faci este dorim să grup aceste cifre afară, în grupuri de 4, pornind de la dreapta și de lucru la stânga. Nu se întâmplă să fie de 32 de cifre aici, ceea ce înseamnă că avem o pauza curat frumos de 8 grupe de 4. Amintiți-vă că fiecare grup de 4 aici, mod unic corespunde la o cifră hexazecimală. Deci, vom începe din nou clădirea noastră Numărul de pe dreapta, și să lucreze la stânga. Ei bine, ce e 1,101? Ei bine, vom face matematica în capul nostru, Avem 1 în locul optari, o 1 în locul patru labe, o 0 în doi cate doi loc, și un 1 în locul celor. Asta e 8 plus 4 plus 1, care ne-ar ști ca 13. Dar noi probabil nu ar scrie 13 din, pentru că lucrăm cu hexazecimal. Avem nevoie să-l convertească la hexazecimal echivalent de 13, care este d. 0011, bine că e un 0 în loc optari, o 0 în patru labe loc, o 1 în locul câte două, și un 1 în locul celor. Asta e 3. Adică face asta din nou, avem aici 9. Și apoi 11, dar asta e b, amintesc. 2, 10-- sau un-- 6, și 4. Și pentru ca șir foarte mare de 0 și 1 de a partea de sus se exprimă mai mult concis în hexazecimal ca 0x 46a2b93d. Ei bine, OK, am învățat o nouă abilitate rece, ceea ce este punctul? S-ar putea ca nu utilizați asta tot timp, așa cum vom vedea în curând, vom folosi hexazecimal destul de o mulțime de programatori. Nu neapărat pentru scopul de a face matematica cu ea, ci pentru că o mulțime de ori adresele de memorie din sistemul nostru sunt reprezentate în hexazecimal. Este un mod foarte concis de a exprima , numere binare altfel greoaie. Și astfel, din nou, s-ar putea not-- esti, probabil, nu de gând să faci orice matematica cu el, nu sunteți O să fie multiplicarea numere hexazecimale împreună, sau de a face ceva ciudat de genul asta. Dar este o abilitate utilă pentru a avea astfel încât să puteți exprima și înțelege memorie adrese, și alte modalități de utilizare a datelor în C. Sunt Doug Lloyd, aceasta este CS50.