DOUG LLYOYD: Dus hexadecimale getallen, alsof we een andere basis number needed regeling toch? Nou, de meeste westerse culturen, zoals u waarschijnlijk bekend zijn, Gebruik de decimale system-- base 10, om numerieke gegevens te vertegenwoordigen. We hebben de cijfers 0, 1, 2, 3, 5, 6, 7,8,9. En als we moeten vertegenwoordigen waarden hoger dan negen, kunnen we die cijfers te combineren met behulp van het begrip plaats waarde. Dus voor 10, hebben we een 1 cijfer, gevolgd door een 0 digit en we intuïtief te begrijpen dat wat we doen er is dat we vermenigvuldigen de eerste 1 door 10, en vervolgens het toevoegen 0 voor een totaal van 10. Computers iets moois te doen vergelijkbaar, zoals je bent waarschijnlijk bekend, de binaire system-- base 2. Het verschil dat er dat er slechts 2 cijfers werken met-- 0 en 1. En dus onze plaats waarden, in plaats van één, tien, honderd, duizend, omdat ze in het decimale stelsel zou zijn, één, twee, vier, acht, enzovoorts. Hier is het ding, de 0 en 1, met name als we zijn computer wetenschappers en we doen veel van de programmering of het werken met computers, waren gaan te zien veel binaire getallen. En die 0's en 1's in grote ketens kan zeer moeilijk te ontleden. We kunnen niet alleen kijken naar een reeks van 0 en 1's en se weten precies wat het is. Maar het is nog steeds nuttig om te kunnen express data op dezelfde manier een computer werkt. We hebben deze notie van het hexadecimale systeem, dat base 16, in plaats van base 10 of base 2. Wat betekent dat we 16 cijfers werken met in plaats van 10 of 2. En het is een veel beknopte manier uit te drukken binaire informatie op een computersysteem, het is veel meer menselijk begrijpelijk. Dus hebben we de cijfers 0 tot en met 9, en vervolgens we hebben ook deze extra zes digits-- een, b, c, d, e en f, die 10 vertegenwoordigen, ons begrip 10, 11, 12, 13, 14 en 15, in decimalen. Soms, door de manier, zult u ook zien deze A tot F als hoofdletter A met F, die de manier Ik heb de neiging om het te doen. Het is gewoon mijn voorkeur stijl, maar ofwel is prima, ze allebei behoorlijk vertegenwoordigen veel hetzelfde. Dus waarom is hexadecimale cool? Waarom hebben we nodig om dit te gebruiken andere aanvullende grondslag? We hebben al 2 en 10, waarom hebben we 16 nodig? Wel 16 is een macht van 2, enzovoort elk hexadecimaal cijfer, 0 tot en met f, correspondeert met een unieke bestellen, of unieke arrangement van 4 binaire cijfers, 4 bits. En dus in die zin kunnen we uitdrukken lange, complexe, binaire getallen in hexadecimaal in een veel meer beknopte manier, zonder verlies van informatie hoeven te worden doen het bijzonder omslachtig conversies op deze nummers. Dus, zoals ik net zei, elke hexadecimale cijfers correspondeert met een unieke rangschikking van 4 binaire cijfers. Dus de binaire tekenreeks 0000 overeenkomt met hexadecimaal getal 0. 0110 komt overeen met hexadecimaal getal 6. En 1111 overeen naar hexadecimaal getal f. Als u op zoek bent naar deze grafiek, in het bijzonder als u op zoek bent naar de linkerkant van de grafiek, kun je al zien dat er een beetje een dubbelzinnigheid probleem. Decimaal 0 is vrij veel onderscheiden van hexadecimaal 0, behalve dat het onder een kolom die hexadecimale zegt. Maar we zullen waarschijnlijk niet altijd hebben die kolom er. Meestal wanneer we uitdrukken getallen in hexadecimale notatie om duidelijk te onderscheiden ze van decimale notatie, we meestal prefix hen met het voorvoegsel 0x. 0x betekent niets in de werkelijkheid, het is gewoon een aanwijzing voor ons als mens dat wat we op het punt om te zien, of zullen ontleden beginnen, is een hexadecimaal getal. Uiteraard voor de hogere getallen a, b, c, d en f, die overeenkomen met 10-15 het is vrij eenduidig ​​dat is dat is een hexadecimaal getal. En in feite elke hexadecimale nummer dat brieven in zich heeft, is waarschijnlijk vrij duidelijk als een hexadecimaal getal. Maar toch, voor het Duidelijkheidshalve is het altijd een goed idee om prefix elke keer dat u verwijzen naar een cijfer als een hexadecimaal getal met een voorvoegsel 0x. Dus, binair, we zei, heeft plaats waarden. Er zijn degenen plaats, een plek tweeën, fours een plaats en een plek achten. En decimaal heeft ook plaats waarden, de eenheden, tientallen, honderden, en duizenden dat we allemaal kunnen herinneren van de lagere school. En hexadecimale geen behalve hier, echt. Het heeft ook plaats waarden, maar in plaats daarvan van zijn bevoegdheden van 2 of bevoegdheden van 10, ze zijn krachten van 16. Zo zien we een aantal als dit wij vrij duidelijk weten dat het 397, toch? Nou als we een nummer als dit, We weten dat dit niet 397 meer. Dit is de hexadecimale nummer 3-9 zevenennegentig. Het is niet 397, betekent iets anders, omdat we met de macht van 16, zoals alle van onze plaats waarden in plaats van de bevoegdheden 10. In feite is de plaats waarden zou hier degenen zijn plaats, de sixteens plaats, en de twee honderd vijftig zessen plaats, die overeenkomen met ons idee van degenen plaats, tientallen plaats, en een honderden plaats, indien het aantal was 397. Maar aangezien het 0x 397, hebben we een die plaats, sixteens plaats, en een twee honderd vijftig zessen plaats. Of een 16 naar 0 plaats, dat 1. A 16 naar de eerste macht plaats 16. Een 16 kwadraat plaats, 256, en enzovoorts, enzovoorts, enzovoorts. Dus dit nummer echt 3 keer 16 kwadraat, plus 9 tijden 16, plus 7. Ik heb de wiskunde niet hier te doen, maar het is niet 397, het is veel, veel groter dan dat. Ook konden we 0x ADC hebben, Nou dat is een keer 16 kwadraat. Of als we dat vertalen naar onze opvatting decimale getallen, dat is 10 keer 16 kwadraat, plus d tijden 16 of 13 plus 16 keer. En maak je geen zorgen als je niet hebt opgeslagen dat d is 13, of iets dergelijks, er is niet al te veel van deze brief cijfers en het zal worden vrij snel intuïtief. Dus ook dit is 10 keer 16 kwadraat, plus 13 keer 16, plus 12 keer 1. Dus 0x ADC. Dus, zoals ik al zei, elke groep van 4 binaire cijfers overeen met een enkele hexadecimaal cijfer, en dus het is eigenlijk heel gemakkelijk heen en weer veranderen tussen hex en binaire. Als u deze lange reeks binaire cijfers, alles wat je hoeft te doen is beginnen te groeperen rechts links als groepen van 4. En dan kun je consolideren ze in hexadecimale getallen, ernstige beperking van het aantal cijfers moet je mentaal te verwerken. In plaats van 32 0 en 1 is, zoals we zullen zien in een tweede, je zou in staat zijn om het neer te halen tot slechts 8 hexadecimale cijfers, veel beknopter. De grafieken een paar dia's terug u helpen om erachter te komen dit in kaart brengen, hoewel, nogmaals je zult onthouden het vrij snel. We gaan door middel van een voorbeeld op dit moment. Dus als we een nummer als dit, dit is echt groot binair nummer, of wat lijkt op een groot binair getal. En de reden waarom ik zeg dat, het is gewoon so-- het is een kolos, toch? Er is zo veel 0's en 1's daar. Maar we waarschijnlijk niet doen echt een gevoel van wat de grootte van dit getal is echt. We hebben geen idee wat het zou overeenkomen met een decimaal. En in feite zullen we niet eens zien wat het correspondeert met in decimale nu. We zouden in staat zijn om drukken deze op een wijze die zou ons wat meer informatie geven over hoe groot dit aantal is. Dus laten we naar die conversie proces. Het eerste wat we nodig hebben te doen is dat we willen groep deze cijfers uit in groepen van 4, beginnend van rechts en werken naar links. Er toevallig 32 cijfers hier, wat betekent dat we een mooie schone onderbreking van 8 groepen van 4. Herinner dat elke groep 4 hier, uniek correspondeert naar een hexadecimaal getal. Dus zullen we weer beginnen met het bouwen van onze nummer van rechts en links werken. Tja, wat is 1101? Nou wij doen de wiskunde in ons hoofd, we hebben 1 in de plaats achten, een 1 in de fours plaats, een 0 in tweeën plaats, en een 1 op degenen plaats. Dat is 8 plus 4 plus 1, die we zouden kennen als 13. Maar we waarschijnlijk niet zou schrijven 13 uit, omdat we werken met hexadecimale. We moeten om te zetten naar de hexadecimale equivalent 13, dat d. 0011, goed, dat is een 0 in het achten plaats, een 0 in fours plaats, een 1 in de tweeën plaats, en een 1 op degenen plaats. Dat is 3. Ik bedoel dit blijven doen Nogmaals, we hebben hier 9. En dan 11, maar dat is b, recall. 2, 10-- of a-- 6 en 4. En zo dat zeer grote reeks van 0 en 1 is de top is meer bondig uitgedrukt hexadecimaal als 0x 46a2b93d. Nou, OK, we hebben geleerd een nieuwe koele vaardigheid, wat is het punt? We kunnen niet Gebruik alle tijd, zoals we zullen binnenkort te zien, we gebruiken hexadecimale vrij veel programmeurs. Die niet noodzakelijk voor de doel van het doen van wiskunde met het, maar omdat een heleboel keer geheugenadressen in ons systeem zijn weergegeven in hexadecimaal. Het is echt een beknopte manier uit te drukken anders omslachtig binaire getallen. En dus, nogmaals, mag u niet-- bent u waarschijnlijk niet van plan om geen wiskunde te doen met het, je bent niet gaat worden vermenigvuldigen hexadecimale getallen met elkaar, of iets raar als dat te doen. Maar het is een nuttige vaardigheid te hebben dus je kunt verwoorden en te begrijpen geheugen adressen en andere manieren om data in C. Ik ben Doug Lloyd, dit is CS50.