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.