DOUG LLYOYD: So heksadesimale getalle, asof ons 'n ander basis getal wat nodig is skema reg? Wel, die meeste Westerse kulture, as jy waarskynlik vertroud is, gebruik die desimale system-- basis 10, om numeriese data verteenwoordig. Ons het die syfers 0, 1, 2, 3, 5, 6, 7,8,9. En as ons nodig het om te verteenwoordig waardes hoër as nege, kan ons die syfers kombineer die gebruik van die idee van plekwaarde. So vir 10, ons het 'n 1 syfer gevolg deur 'n 0 syfer en ons intuïtief verstaan dat dit wat ons doen daar is ons vermenigvuldig die eerste 1 met 10, en dan voeg 0 vir 'n totaal van 10. Rekenaars iets mooi doen soortgelyke, soos jy waarskynlik vertroud, met die binêre system-- basis 2. Die verskil dat daar dat daar slegs 2 syfers om te werk with-- 0 en 1. En so ons plek waardes, in plaas van om die een, tien honderd duisend, soos hulle in die desimale stelsel sou wees, is een, twee, vier, agt, en so aan. Hier is die ding al is, diegene 0 en 1 se, veral as ons om die rekenaar wetenskaplikes en ons is besig met 'n baie van die ontwikkeling of die werk met rekenaars, gaan word aangesien 'n baie binêre getalle. En diegene 0 en 1 in groot kettings kan baie moeilik wees om te ontleed. Ons kan nie net kyk na 'n string van 0 en 1 en noodwendig weet presies wat dit is. Maar dit is nog steeds nuttig om in staat wees uitdruklike data op dieselfde manier dat 'n rekenaar doen. Ons het hierdie idee van die heksadesimale stelsel, wat basis 16, in plaas van die basis 10 of basis 2. Wat beteken dat ons 16 syfers om te werk met in plaas van 10 of 2. En dit is 'n baie meer bondige manier om binêre inligting op 'n rekenaarstelsel, dit is baie meer menslike verstaanbaar. So ons het die syfers 0 tot 9, en dan ons het ook hierdie ekstra ses digits-- a, b, c, d, e, f en wat 10 verteenwoordig, ons idee van 10, 11, 12, 13, 14 en 15, in desimale. Soms, op die pad, sal jy ook sien dat hierdie 'n deur f se kapitaal A deur F, wat is die manier wat ek is geneig om dit te doen. Dit is net my voorkeur styl, maar een is goed, hulle albei mooi verteenwoordig much dieselfde ding. So hoekom is heksadesimale koel? Hoekom moet ons om dit te gebruik ander addisionele basis? Ons het reeds 2 en 10, hoekom moet ons 16 nodig? Wel 16 is 'n krag van 2, en so elke heksadesimale syfer, 0 tot f, ooreenstem met 'n unieke bestel, of unieke reëling 4 binêre syfers, 4 stukkies. En so in daardie sin, kan ons uit te druk baie lang, komplekse, binêre getalle in heksadesimaal in 'n veel meer bondige manier, sonder verlies inligting of om te doen veral omslagtig doelskoppe op dié nommers. So, as ek het net gesê, elke heksadesimale syfer ooreenstem met 'n unieke rangskikking van 4 binêre syfers. So die binêre string 0000 ooreenstem met heksadesimale syfer 0. 0110 stem ooreen met heksadesimale syfer 6. En 1111 ooreenstem om heksadesimale syfer f. As jy kyk na hierdie grafiek, veral As jy kyk na die linkerkant van die grafiek, kan jy al sien daar is 'n bietjie van 'n dubbelsinnigheid probleem hier. Desimale 0 is pretty much ononderskeibaar van heksadesimale 0, anders as die feit dat dit onder 'n kolom wat heksadesimale sê. Maar ons sal waarskynlik nie altyd het daardie kolom daar. Algemeen wanneer ons die uitdrukking getalle in heksadesimaal notasie duidelik onderskei hulle van desimale notasie, ons gewoonlik voorvoegsel hulle met die voorvoegsel 0x. 0x beteken niks in die werklikheid, dit is net 'n idee om ons as mense dat dit wat ons oor om te sien, of oor parsing begin, is 'n heksadesimale getal. Dit is duidelik dat vir die hoër syfers a, b, c, d, en f, wat ooreenstem met 10-15 dit is redelik ondubbelsinnig dis dit is 'n heksadesimale getal. En in die feit, enige heksadesimale getal wat briewe in dit, is waarskynlik redelik duidelik as 'n heksadesimaal nommer. Maar, nog steeds, vir die Ter wille van duidelikheid, dit is altyd 'n goeie idee om voorvoegsel elke keer as jy verwys na 'n syfer as 'n heksadesimaal aantal voorvoegsel n 0x. So, binêre, soos ons gesê het plekwaarde. Daar is die wat plaasvind, 'n twee-twee plek, 'n viere plek, en 'n agts plek. En desimale het ook plekwaardes, die kinders, tiene, honderde en duisende dat ons almal kan onthou van graad skool. En heksadesimale geen uitsondering hier, regtig. Dit het ook 'n plek waardes, maar in plaas om magte van 2 of magte van 10, hulle is magte van 16. So sien ons 'n aantal soos hierdie ons mooi duidelik weet dit is 397, reg? Wel, as ons sien 'n aantal soos hierdie, Ons weet dit is nie 397 nie. Dit is die heksadesimale nommer drie-9-7. Dit is nie 397, beteken dit iets anders, want ons is met behulp van magte van 16 as al van ons plekwaarde in plaas van magte van 10. In werklikheid, die plekwaarde hier sou wees wat plaasvind, die sixteens plek, en die twee-en-vyftig-100 sesse plek, wat ooreenstem met ons idee van 'n kinders plek, tien plek, en 'n honderde plek, indien die aantal was 397. Maar aangesien dit 0x 397, ons het 'n ene plek, sixteens plek, en 'n twee-100-50-sesse plek. Of, 'n 16 by die 0 plek wat 1. A 16 van die eerste krag plek, 16. A 16 kwadraat plek, 256, en so aan, en so aan, en so aan. So hierdie nommer is regtig 3 keer 16 kwadraat plus 9 keer 16, plus 7. Ek het nie die wiskunde nie hier doen nie, maar dit is nie 397, dit is baie, baie groter as dit. Net so, kan ons 0x ADC het, Wel, dit is 'n keer 16 vierkant. Of as ons vertaal dat ons idee van desimale getalle, dit is 10 keer 16 kwadraat plus d keer 16, of plus 13 keer 16. En moenie bekommerd wees as jy nie gememoriseer dat d is 13, of iets soos dit, daar is nie te veel van hierdie brief syfers en dit sal word redelik vinnig intuïtief. So weer dit is 10 keer 16 vierkantig plus 13 keer 16, plus 12 keer 1. So 0x ADC. So, soos ek gesê het, elke groep van 4 binêre syfers ooreenstem met 'n enkele heksadesimale syfer, en so dit is eintlik regtig maklik om heen en weer te verander tussen hex en binêre. As jy hierdie lang string van binêre syfers, al wat jy hoef te doen is begin groepeer hulle reg na links as groepe van 4. En dan kan jy konsolideer hulle in heksadesimale getalle, ernstig beperking van die aantal syfers wat jy het om geestelik te verwerk. In plaas van 32 0 en 1 se soos ons sal sien in 'n tweede, jy dalk in staat wees om dit af te kry net 8 heksadesimale syfers, 'n baie meer bondige. Die kaarte 'n paar skyfies terug help om uit te vind hierdie kartering, Alhoewel, jy sal weer memoriseer dit redelik vinnig. Ons gaan deur 'n voorbeeld nou. So as ons 'n aantal soos hierdie, dit regtig groot binêre getal, of wat blyk te wees 'n groot binêre getal. En die rede waarom ek sê dat, dit is net so-- dit is 'n seekoei, reg? Daar is so baie 0 en 1 is daar. Maar ons waarskynlik nie regtig 'n gevoel van wat die omvang van hierdie getal is regtig. Ons het nie 'n idee wat dit sou ooreenstem met 'n desimaal. En in die feit dat ons sal nie eens sien hoe dit ooreenstem met in desimale nou. Ons kan in staat wees om druk dit in 'n manier wat sou ons 'n paar meer inligting te gee oor hoe groot hierdie getal is. So laat ons gaan om dit te proses van omskepping. Die eerste ding wat ons nodig te doen, is ons wil groep hierdie syfers uit in groepe van 4, vanaf die regte en werk aan die linkerkant. Daar gebeur om te wees 32 syfers hier, wat beteken dat ons 'n mooi skoon breuk van 8 groepe van 4. Onthou dat elke groep 4 hier, uniek ooreenstem 'n heksadesimale syfer. So sal ons weer begin met die bou van ons aantal van die reg, en werk verlaat. Wel, wat is 1101? Wel, ons doen die wiskunde in ons kop, Ons het 1 in die agts plek, 'n 1 in die viere plek, 'n 0 in die twees plek, en 'n 1 in dié plek. Dit is 8 plus 4 plus 1, wat ons sal weet as 13. Maar ons waarskynlik nie sou skryf 13 uit, want ons is besig met heksadesimale. Ons moet dit te omskep in die heksadesimale ekwivalent van 13, wat is d. 0011, goed dit is 'n 0 in die agts plek, 'n 0 in viere plek, 'n 1 in die twees plek, en 'n 1 in dié plek. Dit is 3. Ek bedoel hou om dit te doen weer, ons het hier 9. En dan 11, maar dit is b, onthou. 2, 10-- of a-- 6 en 4. En sodat baie groot string van 0 en 1 se van die top is meer bondig uitgedruk in heksadesimaal as 0x 46a2b93d. Wel, OK, ons geleer het 'n nuwe koel vaardigheid, wat is die punt? Ons kan nie gebruik dit al die tyd, soos ons gaan binnekort te sien, ons gebruik heksadesimale heel 'n baie as programmeerders. Nie noodwendig vir die doel van wiskunde doen met dit, maar omdat 'n baie keer geheue-adresse in ons stelsel verteenwoordig in heksadesimaal. Dit is 'n baie bondige manier om anders omslagtig, binêre getalle. En so, weer, kan jy not-- jy waarskynlik nie van plan om enige wiskunde te doen met dit, jy is nie gaan wees vermenigvuldig heksadesimale getalle bymekaar, of enigiets weird soos dit te doen. Maar dit is 'n nuttige vaardigheid te hê sodat jy kan uitdruk en te verstaan geheue adresse, en ander maniere van die gebruik van data in C. Ek is Doug Lloyd, dit is CS50.