1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: So heksadesimale getalle, asof ons 'n ander basis getal wat nodig is 3 00:00:08,510 --> 00:00:09,970 skema reg? 4 00:00:09,970 --> 00:00:13,000 Wel, die meeste Westerse kulture, as jy waarskynlik vertroud is, 5 00:00:13,000 --> 00:00:16,560 gebruik die desimale system-- basis 10, om numeriese data verteenwoordig. 6 00:00:16,560 --> 00:00:20,520 Ons het die syfers 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 En as ons nodig het om te verteenwoordig waardes hoër as nege, 8 00:00:23,890 --> 00:00:26,800 kan ons die syfers kombineer die gebruik van die idee van plekwaarde. 9 00:00:26,800 --> 00:00:30,115 So vir 10, ons het 'n 1 syfer gevolg deur 'n 0 syfer 10 00:00:30,115 --> 00:00:32,240 en ons intuïtief verstaan dat dit wat ons doen 11 00:00:32,240 --> 00:00:35,500 daar is ons vermenigvuldig die eerste 1 met 10, 12 00:00:35,500 --> 00:00:37,689 en dan voeg 0 vir 'n totaal van 10. 13 00:00:37,689 --> 00:00:40,480 Rekenaars iets mooi doen soortgelyke, soos jy waarskynlik vertroud, 14 00:00:40,480 --> 00:00:42,409 met die binêre system-- basis 2. 15 00:00:42,409 --> 00:00:44,700 Die verskil dat daar dat daar slegs 2 syfers 16 00:00:44,700 --> 00:00:46,770 om te werk with-- 0 en 1. 17 00:00:46,770 --> 00:00:49,033 En so ons plek waardes, in plaas van om die een, 18 00:00:49,033 --> 00:00:52,600 tien honderd duisend, soos hulle in die desimale stelsel sou wees, 19 00:00:52,600 --> 00:00:57,690 is een, twee, vier, agt, en so aan. 20 00:00:57,690 --> 00:01:00,842 Hier is die ding al is, diegene 0 en 1 se, veral 21 00:01:00,842 --> 00:01:03,800 as ons om die rekenaar wetenskaplikes en ons is besig met 'n baie van die ontwikkeling 22 00:01:03,800 --> 00:01:06,924 of die werk met rekenaars, gaan word aangesien 'n baie binêre getalle. 23 00:01:06,924 --> 00:01:11,660 En diegene 0 en 1 in groot kettings kan baie moeilik wees om te ontleed. 24 00:01:11,660 --> 00:01:16,610 Ons kan nie net kyk na 'n string van 0 en 1 en noodwendig weet 25 00:01:16,610 --> 00:01:17,810 presies wat dit is. 26 00:01:17,810 --> 00:01:21,980 Maar dit is nog steeds nuttig om in staat wees uitdruklike data op dieselfde manier 27 00:01:21,980 --> 00:01:23,480 dat 'n rekenaar doen. 28 00:01:23,480 --> 00:01:26,580 Ons het hierdie idee van die heksadesimale stelsel, wat 29 00:01:26,580 --> 00:01:29,840 basis 16, in plaas van die basis 10 of basis 2. 30 00:01:29,840 --> 00:01:34,420 Wat beteken dat ons 16 syfers om te werk met in plaas van 10 of 2. 31 00:01:34,420 --> 00:01:37,180 En dit is 'n baie meer bondige manier om 32 00:01:37,180 --> 00:01:41,210 binêre inligting op 'n rekenaarstelsel, dit is baie meer menslike verstaanbaar. 33 00:01:41,210 --> 00:01:43,520 So ons het die syfers 0 tot 9, en dan 34 00:01:43,520 --> 00:01:49,480 ons het ook hierdie ekstra ses digits-- a, b, c, d, e, f en wat 10 verteenwoordig, 35 00:01:49,480 --> 00:01:56,050 ons idee van 10, 11, 12, 13, 14 en 15, in desimale. 36 00:01:56,050 --> 00:01:59,787 Soms, op die pad, sal jy ook sien dat hierdie 'n deur f se kapitaal A 37 00:01:59,787 --> 00:02:01,620 deur F, wat is die manier wat ek is geneig om dit te doen. 38 00:02:01,620 --> 00:02:04,560 Dit is net my voorkeur styl, maar een is goed, 39 00:02:04,560 --> 00:02:07,870 hulle albei mooi verteenwoordig much dieselfde ding. 40 00:02:07,870 --> 00:02:09,090 >> So hoekom is heksadesimale koel? 41 00:02:09,090 --> 00:02:11,580 Hoekom moet ons om dit te gebruik ander addisionele basis? 42 00:02:11,580 --> 00:02:14,310 Ons het reeds 2 en 10, hoekom moet ons 16 nodig? 43 00:02:14,310 --> 00:02:21,650 Wel 16 is 'n krag van 2, en so elke heksadesimale syfer, 0 tot f, 44 00:02:21,650 --> 00:02:25,440 ooreenstem met 'n unieke bestel, of unieke reëling 45 00:02:25,440 --> 00:02:29,060 4 binêre syfers, 4 stukkies. 46 00:02:29,060 --> 00:02:34,570 En so in daardie sin, kan ons uit te druk baie lang, komplekse, binêre getalle 47 00:02:34,570 --> 00:02:36,440 in heksadesimaal in 'n veel meer bondige manier, 48 00:02:36,440 --> 00:02:41,080 sonder verlies inligting of om te doen veral omslagtig doelskoppe 49 00:02:41,080 --> 00:02:42,480 op dié nommers. 50 00:02:42,480 --> 00:02:44,880 >> So, as ek het net gesê, elke heksadesimale syfer 51 00:02:44,880 --> 00:02:48,630 ooreenstem met 'n unieke rangskikking van 4 binêre syfers. 52 00:02:48,630 --> 00:02:53,670 So die binêre string 0000 ooreenstem met heksadesimale syfer 0. 53 00:02:53,670 --> 00:03:00,340 0110 stem ooreen met heksadesimale syfer 6. 54 00:03:00,340 --> 00:03:05,225 En 1111 ooreenstem om heksadesimale syfer f. 55 00:03:05,225 --> 00:03:07,100 As jy kyk na hierdie grafiek, veral 56 00:03:07,100 --> 00:03:09,099 As jy kyk na die linkerkant van die grafiek, 57 00:03:09,099 --> 00:03:11,970 kan jy al sien daar is 'n bietjie van 'n dubbelsinnigheid probleem hier. 58 00:03:11,970 --> 00:03:15,229 Desimale 0 is pretty much ononderskeibaar van heksadesimale 0, 59 00:03:15,229 --> 00:03:18,020 anders as die feit dat dit onder 'n kolom wat heksadesimale sê. 60 00:03:18,020 --> 00:03:22,130 >> Maar ons sal waarskynlik nie altyd het daardie kolom daar. 61 00:03:22,130 --> 00:03:25,420 Algemeen wanneer ons die uitdrukking getalle in heksadesimaal notasie 62 00:03:25,420 --> 00:03:28,130 duidelik onderskei hulle van desimale notasie, 63 00:03:28,130 --> 00:03:31,860 ons gewoonlik voorvoegsel hulle met die voorvoegsel 0x. 64 00:03:31,860 --> 00:03:35,990 0x beteken niks in die werklikheid, dit is net 'n idee om ons as mense 65 00:03:35,990 --> 00:03:39,190 dat dit wat ons oor om te sien, of oor parsing begin, 66 00:03:39,190 --> 00:03:40,750 is 'n heksadesimale getal. 67 00:03:40,750 --> 00:03:45,590 Dit is duidelik dat vir die hoër syfers a, b, c, d, en f, wat ooreenstem met 10-15 68 00:03:45,590 --> 00:03:48,840 dit is redelik ondubbelsinnig dis dit is 'n heksadesimale getal. 69 00:03:48,840 --> 00:03:51,620 En in die feit, enige heksadesimale getal wat briewe in dit, 70 00:03:51,620 --> 00:03:54,642 is waarskynlik redelik duidelik as 'n heksadesimaal nommer. 71 00:03:54,642 --> 00:03:56,350 Maar, nog steeds, vir die Ter wille van duidelikheid, dit is 72 00:03:56,350 --> 00:03:58,290 altyd 'n goeie idee om voorvoegsel elke keer as jy 73 00:03:58,290 --> 00:04:01,835 verwys na 'n syfer as 'n heksadesimaal aantal voorvoegsel n 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> So, binêre, soos ons gesê het plekwaarde. 76 00:04:06,810 --> 00:04:10,040 Daar is die wat plaasvind, 'n twee-twee plek, 'n viere plek, en 'n agts plek. 77 00:04:10,040 --> 00:04:13,640 En desimale het ook plekwaardes, die kinders, tiene, honderde en duisende 78 00:04:13,640 --> 00:04:15,910 dat ons almal kan onthou van graad skool. 79 00:04:15,910 --> 00:04:18,050 En heksadesimale geen uitsondering hier, regtig. 80 00:04:18,050 --> 00:04:22,660 Dit het ook 'n plek waardes, maar in plaas om magte van 2 of magte van 10, 81 00:04:22,660 --> 00:04:25,050 hulle is magte van 16. 82 00:04:25,050 --> 00:04:29,410 >> So sien ons 'n aantal soos hierdie ons mooi duidelik weet dit is 397, reg? 83 00:04:29,410 --> 00:04:33,420 Wel, as ons sien 'n aantal soos hierdie, Ons weet dit is nie 397 nie. 84 00:04:33,420 --> 00:04:36,730 Dit is die heksadesimale nommer drie-9-7. 85 00:04:36,730 --> 00:04:39,680 Dit is nie 397, beteken dit iets anders, 86 00:04:39,680 --> 00:04:44,180 want ons is met behulp van magte van 16 as al van ons plekwaarde in plaas van magte 87 00:04:44,180 --> 00:04:45,560 van 10. 88 00:04:45,560 --> 00:04:50,570 In werklikheid, die plekwaarde hier sou wees wat plaasvind, die sixteens plek, 89 00:04:50,570 --> 00:04:55,080 en die twee-en-vyftig-100 sesse plek, wat ooreenstem met ons idee van 'n kinders 90 00:04:55,080 --> 00:04:59,180 plek, tien plek, en 'n honderde plek, indien die aantal was 397. 91 00:04:59,180 --> 00:05:03,620 Maar aangesien dit 0x 397, ons het 'n ene plek, sixteens plek, 92 00:05:03,620 --> 00:05:05,780 en 'n twee-100-50-sesse plek. 93 00:05:05,780 --> 00:05:09,460 Of, 'n 16 by die 0 plek wat 1. 94 00:05:09,460 --> 00:05:12,420 A 16 van die eerste krag plek, 16. 95 00:05:12,420 --> 00:05:17,080 A 16 kwadraat plek, 256, en so aan, en so aan, en so aan. 96 00:05:17,080 --> 00:05:24,400 So hierdie nommer is regtig 3 keer 16 kwadraat plus 9 keer 16, plus 7. 97 00:05:24,400 --> 00:05:28,980 Ek het nie die wiskunde nie hier doen nie, maar dit is nie 397, dit is baie, baie groter as dit. 98 00:05:28,980 --> 00:05:34,050 >> Net so, kan ons 0x ADC het, Wel, dit is 'n keer 16 vierkant. 99 00:05:34,050 --> 00:05:38,220 Of as ons vertaal dat ons idee van desimale getalle, dit is 10 keer 100 00:05:38,220 --> 00:05:44,160 16 kwadraat plus d keer 16, of plus 13 keer 16. 101 00:05:44,160 --> 00:05:47,410 En moenie bekommerd wees as jy nie gememoriseer dat d is 13, of iets soos dit, 102 00:05:47,410 --> 00:05:49,201 daar is nie te veel van hierdie brief syfers 103 00:05:49,201 --> 00:05:52,820 en dit sal word redelik vinnig intuïtief. 104 00:05:52,820 --> 00:05:59,800 So weer dit is 10 keer 16 vierkantig plus 13 keer 16, plus 12 keer 1. 105 00:05:59,800 --> 00:06:03,640 So 0x ADC. 106 00:06:03,640 --> 00:06:07,750 >> So, soos ek gesê het, elke groep van 4 binêre syfers 107 00:06:07,750 --> 00:06:10,000 ooreenstem met 'n enkele heksadesimale syfer, 108 00:06:10,000 --> 00:06:12,570 en so dit is eintlik regtig maklik om heen en weer te verander 109 00:06:12,570 --> 00:06:14,690 tussen hex en binêre. 110 00:06:14,690 --> 00:06:18,310 As jy hierdie lang string van binêre syfers, al wat jy hoef te doen 111 00:06:18,310 --> 00:06:21,320 is begin groepeer hulle reg na links as groepe van 4. 112 00:06:21,320 --> 00:06:26,550 En dan kan jy konsolideer hulle in heksadesimale getalle, 113 00:06:26,550 --> 00:06:30,910 ernstig beperking van die aantal syfers wat jy het om geestelik te verwerk. 114 00:06:30,910 --> 00:06:33,680 In plaas van 32 0 en 1 se soos ons sal sien in 'n tweede, 115 00:06:33,680 --> 00:06:37,630 jy dalk in staat wees om dit af te kry net 8 heksadesimale syfers, 'n baie 116 00:06:37,630 --> 00:06:39,200 meer bondige. 117 00:06:39,200 --> 00:06:43,500 >> Die kaarte 'n paar skyfies terug help om uit te vind hierdie kartering, 118 00:06:43,500 --> 00:06:45,660 Alhoewel, jy sal weer memoriseer dit redelik vinnig. 119 00:06:45,660 --> 00:06:47,320 Ons gaan deur 'n voorbeeld nou. 120 00:06:47,320 --> 00:06:51,507 So as ons 'n aantal soos hierdie, dit regtig groot binêre getal, 121 00:06:51,507 --> 00:06:53,340 of wat blyk te wees 'n groot binêre getal. 122 00:06:53,340 --> 00:06:56,260 En die rede waarom ek sê dat, dit is net so-- dit is 'n seekoei, reg? 123 00:06:56,260 --> 00:06:58,959 Daar is so baie 0 en 1 is daar. 124 00:06:58,959 --> 00:07:01,000 Maar ons waarskynlik nie regtig 'n gevoel van wat 125 00:07:01,000 --> 00:07:02,870 die omvang van hierdie getal is regtig. 126 00:07:02,870 --> 00:07:06,150 Ons het nie 'n idee wat dit sou ooreenstem met 'n desimaal. 127 00:07:06,150 --> 00:07:09,744 En in die feit dat ons sal nie eens sien hoe dit ooreenstem met in desimale nou. 128 00:07:09,744 --> 00:07:11,660 Ons kan in staat wees om druk dit in 'n manier wat 129 00:07:11,660 --> 00:07:15,640 sou ons 'n paar meer inligting te gee oor hoe groot hierdie getal is. 130 00:07:15,640 --> 00:07:17,270 >> So laat ons gaan om dit te proses van omskepping. 131 00:07:17,270 --> 00:07:19,311 Die eerste ding wat ons nodig te doen, is ons wil groep 132 00:07:19,311 --> 00:07:23,050 hierdie syfers uit in groepe van 4, vanaf die regte 133 00:07:23,050 --> 00:07:24,120 en werk aan die linkerkant. 134 00:07:24,120 --> 00:07:27,260 Daar gebeur om te wees 32 syfers hier, wat beteken dat ons 135 00:07:27,260 --> 00:07:33,210 'n mooi skoon breuk van 8 groepe van 4. 136 00:07:33,210 --> 00:07:36,200 Onthou dat elke groep 4 hier, uniek ooreenstem 137 00:07:36,200 --> 00:07:37,760 'n heksadesimale syfer. 138 00:07:37,760 --> 00:07:42,080 So sal ons weer begin met die bou van ons aantal van die reg, en werk verlaat. 139 00:07:42,080 --> 00:07:44,890 Wel, wat is 1101? 140 00:07:44,890 --> 00:07:49,220 Wel, ons doen die wiskunde in ons kop, Ons het 1 in die agts plek, 'n 1 141 00:07:49,220 --> 00:07:54,310 in die viere plek, 'n 0 in die twees plek, en 'n 1 in dié plek. 142 00:07:54,310 --> 00:07:58,820 Dit is 8 plus 4 plus 1, wat ons sal weet as 13. 143 00:07:58,820 --> 00:08:02,400 Maar ons waarskynlik nie sou skryf 13 uit, want ons is besig met heksadesimale. 144 00:08:02,400 --> 00:08:07,982 Ons moet dit te omskep in die heksadesimale ekwivalent van 13, wat is d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, goed dit is 'n 0 in die agts plek, 'n 0 in viere plek, 146 00:08:12,940 --> 00:08:15,190 'n 1 in die twees plek, en 'n 1 in dié plek. 147 00:08:15,190 --> 00:08:16,880 Dit is 3. 148 00:08:16,880 --> 00:08:20,180 Ek bedoel hou om dit te doen weer, ons het hier 9. 149 00:08:20,180 --> 00:08:23,850 En dan 11, maar dit is b, onthou. 150 00:08:23,850 --> 00:08:30,570 2, 10-- of a-- 6 en 4. 151 00:08:30,570 --> 00:08:34,669 En sodat baie groot string van 0 en 1 se van die top 152 00:08:34,669 --> 00:08:38,549 is meer bondig uitgedruk in heksadesimaal as 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Wel, OK, ons geleer het 'n nuwe koel vaardigheid, wat is die punt? 155 00:08:45,870 --> 00:08:49,560 Ons kan nie gebruik dit al die tyd, soos ons gaan binnekort te sien, 156 00:08:49,560 --> 00:08:52,370 ons gebruik heksadesimale heel 'n baie as programmeerders. 157 00:08:52,370 --> 00:08:55,060 Nie noodwendig vir die doel van wiskunde doen met dit, 158 00:08:55,060 --> 00:08:58,470 maar omdat 'n baie keer geheue-adresse in ons stelsel 159 00:08:58,470 --> 00:09:00,440 verteenwoordig in heksadesimaal. 160 00:09:00,440 --> 00:09:04,390 Dit is 'n baie bondige manier om anders omslagtig, binêre getalle. 161 00:09:04,390 --> 00:09:06,440 En so, weer, kan jy not-- jy waarskynlik 162 00:09:06,440 --> 00:09:07,640 nie van plan om enige wiskunde te doen met dit, jy is nie 163 00:09:07,640 --> 00:09:09,848 gaan wees vermenigvuldig heksadesimale getalle bymekaar, 164 00:09:09,848 --> 00:09:11,770 of enigiets weird soos dit te doen. 165 00:09:11,770 --> 00:09:16,120 Maar dit is 'n nuttige vaardigheid te hê sodat jy kan uitdruk en te verstaan 166 00:09:16,120 --> 00:09:23,290 geheue adresse, en ander maniere van die gebruik van data in C. 167 00:09:23,290 --> 00:09:26,240 >> Ek is Doug Lloyd, dit is CS50. 168 00:09:26,240 --> 00:09:28,028