1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: Dus hexadecimale getallen, alsof we een andere basis number needed 3 00:00:08,510 --> 00:00:09,970 regeling toch? 4 00:00:09,970 --> 00:00:13,000 Nou, de meeste westerse culturen, zoals u waarschijnlijk bekend zijn, 5 00:00:13,000 --> 00:00:16,560 Gebruik de decimale system-- base 10, om numerieke gegevens te vertegenwoordigen. 6 00:00:16,560 --> 00:00:20,520 We hebben de cijfers 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 En als we moeten vertegenwoordigen waarden hoger dan negen, 8 00:00:23,890 --> 00:00:26,800 kunnen we die cijfers te combineren met behulp van het begrip plaats waarde. 9 00:00:26,800 --> 00:00:30,115 Dus voor 10, hebben we een 1 cijfer, gevolgd door een 0 digit 10 00:00:30,115 --> 00:00:32,240 en we intuïtief te begrijpen dat wat we doen 11 00:00:32,240 --> 00:00:35,500 er is dat we vermenigvuldigen de eerste 1 door 10, 12 00:00:35,500 --> 00:00:37,689 en vervolgens het toevoegen 0 voor een totaal van 10. 13 00:00:37,689 --> 00:00:40,480 Computers iets moois te doen vergelijkbaar, zoals je bent waarschijnlijk bekend, 14 00:00:40,480 --> 00:00:42,409 de binaire system-- base 2. 15 00:00:42,409 --> 00:00:44,700 Het verschil dat er dat er slechts 2 cijfers 16 00:00:44,700 --> 00:00:46,770 werken met-- 0 en 1. 17 00:00:46,770 --> 00:00:49,033 En dus onze plaats waarden, in plaats van één, 18 00:00:49,033 --> 00:00:52,600 tien, honderd, duizend, omdat ze in het decimale stelsel zou zijn, 19 00:00:52,600 --> 00:00:57,690 één, twee, vier, acht, enzovoorts. 20 00:00:57,690 --> 00:01:00,842 Hier is het ding, de 0 en 1, met name 21 00:01:00,842 --> 00:01:03,800 als we zijn computer wetenschappers en we doen veel van de programmering 22 00:01:03,800 --> 00:01:06,924 of het werken met computers, waren gaan te zien veel binaire getallen. 23 00:01:06,924 --> 00:01:11,660 En die 0's en 1's in grote ketens kan zeer moeilijk te ontleden. 24 00:01:11,660 --> 00:01:16,610 We kunnen niet alleen kijken naar een reeks van 0 en 1's en se weten 25 00:01:16,610 --> 00:01:17,810 precies wat het is. 26 00:01:17,810 --> 00:01:21,980 Maar het is nog steeds nuttig om te kunnen express data op dezelfde manier 27 00:01:21,980 --> 00:01:23,480 een computer werkt. 28 00:01:23,480 --> 00:01:26,580 We hebben deze notie van het hexadecimale systeem, dat 29 00:01:26,580 --> 00:01:29,840 base 16, in plaats van base 10 of base 2. 30 00:01:29,840 --> 00:01:34,420 Wat betekent dat we 16 cijfers werken met in plaats van 10 of 2. 31 00:01:34,420 --> 00:01:37,180 En het is een veel beknopte manier uit te drukken 32 00:01:37,180 --> 00:01:41,210 binaire informatie op een computersysteem, het is veel meer menselijk begrijpelijk. 33 00:01:41,210 --> 00:01:43,520 Dus hebben we de cijfers 0 tot en met 9, en vervolgens 34 00:01:43,520 --> 00:01:49,480 we hebben ook deze extra zes digits-- een, b, c, d, e en f, die 10 vertegenwoordigen, 35 00:01:49,480 --> 00:01:56,050 ons begrip 10, 11, 12, 13, 14 en 15, in decimalen. 36 00:01:56,050 --> 00:01:59,787 Soms, door de manier, zult u ook zien deze A tot F als hoofdletter A 37 00:01:59,787 --> 00:02:01,620 met F, die de manier Ik heb de neiging om het te doen. 38 00:02:01,620 --> 00:02:04,560 Het is gewoon mijn voorkeur stijl, maar ofwel is prima, 39 00:02:04,560 --> 00:02:07,870 ze allebei behoorlijk vertegenwoordigen veel hetzelfde. 40 00:02:07,870 --> 00:02:09,090 >> Dus waarom is hexadecimale cool? 41 00:02:09,090 --> 00:02:11,580 Waarom hebben we nodig om dit te gebruiken andere aanvullende grondslag? 42 00:02:11,580 --> 00:02:14,310 We hebben al 2 en 10, waarom hebben we 16 nodig? 43 00:02:14,310 --> 00:02:21,650 Wel 16 is een macht van 2, enzovoort elk hexadecimaal cijfer, 0 tot en met f, 44 00:02:21,650 --> 00:02:25,440 correspondeert met een unieke bestellen, of unieke arrangement 45 00:02:25,440 --> 00:02:29,060 van 4 binaire cijfers, 4 bits. 46 00:02:29,060 --> 00:02:34,570 En dus in die zin kunnen we uitdrukken lange, complexe, binaire getallen 47 00:02:34,570 --> 00:02:36,440 in hexadecimaal in een veel meer beknopte manier, 48 00:02:36,440 --> 00:02:41,080 zonder verlies van informatie hoeven te worden doen het bijzonder omslachtig conversies 49 00:02:41,080 --> 00:02:42,480 op deze nummers. 50 00:02:42,480 --> 00:02:44,880 >> Dus, zoals ik net zei, elke hexadecimale cijfers 51 00:02:44,880 --> 00:02:48,630 correspondeert met een unieke rangschikking van 4 binaire cijfers. 52 00:02:48,630 --> 00:02:53,670 Dus de binaire tekenreeks 0000 overeenkomt met hexadecimaal getal 0. 53 00:02:53,670 --> 00:03:00,340 0110 komt overeen met hexadecimaal getal 6. 54 00:03:00,340 --> 00:03:05,225 En 1111 overeen naar hexadecimaal getal f. 55 00:03:05,225 --> 00:03:07,100 Als u op zoek bent naar deze grafiek, in het bijzonder 56 00:03:07,100 --> 00:03:09,099 als u op zoek bent naar de linkerkant van de grafiek, 57 00:03:09,099 --> 00:03:11,970 kun je al zien dat er een beetje een dubbelzinnigheid probleem. 58 00:03:11,970 --> 00:03:15,229 Decimaal 0 is vrij veel onderscheiden van hexadecimaal 0, 59 00:03:15,229 --> 00:03:18,020 behalve dat het onder een kolom die hexadecimale zegt. 60 00:03:18,020 --> 00:03:22,130 >> Maar we zullen waarschijnlijk niet altijd hebben die kolom er. 61 00:03:22,130 --> 00:03:25,420 Meestal wanneer we uitdrukken getallen in hexadecimale notatie 62 00:03:25,420 --> 00:03:28,130 om duidelijk te onderscheiden ze van decimale notatie, 63 00:03:28,130 --> 00:03:31,860 we meestal prefix hen met het voorvoegsel 0x. 64 00:03:31,860 --> 00:03:35,990 0x betekent niets in de werkelijkheid, het is gewoon een aanwijzing voor ons als mens 65 00:03:35,990 --> 00:03:39,190 dat wat we op het punt om te zien, of zullen ontleden beginnen, 66 00:03:39,190 --> 00:03:40,750 is een hexadecimaal getal. 67 00:03:40,750 --> 00:03:45,590 Uiteraard voor de hogere getallen a, b, c, d en f, die overeenkomen met 10-15 68 00:03:45,590 --> 00:03:48,840 het is vrij eenduidig ​​dat is dat is een hexadecimaal getal. 69 00:03:48,840 --> 00:03:51,620 En in feite elke hexadecimale nummer dat brieven in zich heeft, 70 00:03:51,620 --> 00:03:54,642 is waarschijnlijk vrij duidelijk als een hexadecimaal getal. 71 00:03:54,642 --> 00:03:56,350 Maar toch, voor het Duidelijkheidshalve is het 72 00:03:56,350 --> 00:03:58,290 altijd een goed idee om prefix elke keer dat u 73 00:03:58,290 --> 00:04:01,835 verwijzen naar een cijfer als een hexadecimaal getal met een voorvoegsel 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Dus, binair, we zei, heeft plaats waarden. 76 00:04:06,810 --> 00:04:10,040 Er zijn degenen plaats, een plek tweeën, fours een plaats en een plek achten. 77 00:04:10,040 --> 00:04:13,640 En decimaal heeft ook plaats waarden, de eenheden, tientallen, honderden, en duizenden 78 00:04:13,640 --> 00:04:15,910 dat we allemaal kunnen herinneren van de lagere school. 79 00:04:15,910 --> 00:04:18,050 En hexadecimale geen behalve hier, echt. 80 00:04:18,050 --> 00:04:22,660 Het heeft ook plaats waarden, maar in plaats daarvan van zijn bevoegdheden van 2 of bevoegdheden van 10, 81 00:04:22,660 --> 00:04:25,050 ze zijn krachten van 16. 82 00:04:25,050 --> 00:04:29,410 >> Zo zien we een aantal als dit wij vrij duidelijk weten dat het 397, toch? 83 00:04:29,410 --> 00:04:33,420 Nou als we een nummer als dit, We weten dat dit niet 397 meer. 84 00:04:33,420 --> 00:04:36,730 Dit is de hexadecimale nummer 3-9 zevenennegentig. 85 00:04:36,730 --> 00:04:39,680 Het is niet 397, betekent iets anders, 86 00:04:39,680 --> 00:04:44,180 omdat we met de macht van 16, zoals alle van onze plaats waarden in plaats van de bevoegdheden 87 00:04:44,180 --> 00:04:45,560 10. 88 00:04:45,560 --> 00:04:50,570 In feite is de plaats waarden zou hier degenen zijn plaats, de sixteens plaats, 89 00:04:50,570 --> 00:04:55,080 en de twee honderd vijftig zessen plaats, die overeenkomen met ons idee van degenen 90 00:04:55,080 --> 00:04:59,180 plaats, tientallen plaats, en een honderden plaats, indien het aantal was 397. 91 00:04:59,180 --> 00:05:03,620 Maar aangezien het 0x 397, hebben we een die plaats, sixteens plaats, 92 00:05:03,620 --> 00:05:05,780 en een twee honderd vijftig zessen plaats. 93 00:05:05,780 --> 00:05:09,460 Of een 16 naar 0 plaats, dat 1. 94 00:05:09,460 --> 00:05:12,420 A 16 naar de eerste macht plaats 16. 95 00:05:12,420 --> 00:05:17,080 Een 16 kwadraat plaats, 256, en enzovoorts, enzovoorts, enzovoorts. 96 00:05:17,080 --> 00:05:24,400 Dus dit nummer echt 3 keer 16 kwadraat, plus 9 tijden 16, plus 7. 97 00:05:24,400 --> 00:05:28,980 Ik heb de wiskunde niet hier te doen, maar het is niet 397, het is veel, veel groter dan dat. 98 00:05:28,980 --> 00:05:34,050 >> Ook konden we 0x ADC hebben, Nou dat is een keer 16 kwadraat. 99 00:05:34,050 --> 00:05:38,220 Of als we dat vertalen naar onze opvatting decimale getallen, dat is 10 keer 100 00:05:38,220 --> 00:05:44,160 16 kwadraat, plus d tijden 16 of 13 plus 16 keer. 101 00:05:44,160 --> 00:05:47,410 En maak je geen zorgen als je niet hebt opgeslagen dat d is 13, of iets dergelijks, 102 00:05:47,410 --> 00:05:49,201 er is niet al te veel van deze brief cijfers 103 00:05:49,201 --> 00:05:52,820 en het zal worden vrij snel intuïtief. 104 00:05:52,820 --> 00:05:59,800 Dus ook dit is 10 keer 16 kwadraat, plus 13 keer 16, plus 12 keer 1. 105 00:05:59,800 --> 00:06:03,640 Dus 0x ADC. 106 00:06:03,640 --> 00:06:07,750 >> Dus, zoals ik al zei, elke groep van 4 binaire cijfers 107 00:06:07,750 --> 00:06:10,000 overeen met een enkele hexadecimaal cijfer, 108 00:06:10,000 --> 00:06:12,570 en dus het is eigenlijk heel gemakkelijk heen en weer veranderen 109 00:06:12,570 --> 00:06:14,690 tussen hex en binaire. 110 00:06:14,690 --> 00:06:18,310 Als u deze lange reeks binaire cijfers, alles wat je hoeft te doen 111 00:06:18,310 --> 00:06:21,320 is beginnen te groeperen rechts links als groepen van 4. 112 00:06:21,320 --> 00:06:26,550 En dan kun je consolideren ze in hexadecimale getallen, 113 00:06:26,550 --> 00:06:30,910 ernstige beperking van het aantal cijfers moet je mentaal te verwerken. 114 00:06:30,910 --> 00:06:33,680 In plaats van 32 0 en 1 is, zoals we zullen zien in een tweede, 115 00:06:33,680 --> 00:06:37,630 je zou in staat zijn om het neer te halen tot slechts 8 hexadecimale cijfers, veel 116 00:06:37,630 --> 00:06:39,200 beknopter. 117 00:06:39,200 --> 00:06:43,500 >> De grafieken een paar dia's terug u helpen om erachter te komen dit in kaart brengen, 118 00:06:43,500 --> 00:06:45,660 hoewel, nogmaals je zult onthouden het vrij snel. 119 00:06:45,660 --> 00:06:47,320 We gaan door middel van een voorbeeld op dit moment. 120 00:06:47,320 --> 00:06:51,507 Dus als we een nummer als dit, dit is echt groot binair nummer, 121 00:06:51,507 --> 00:06:53,340 of wat lijkt op een groot binair getal. 122 00:06:53,340 --> 00:06:56,260 En de reden waarom ik zeg dat, het is gewoon so-- het is een kolos, toch? 123 00:06:56,260 --> 00:06:58,959 Er is zo veel 0's en 1's daar. 124 00:06:58,959 --> 00:07:01,000 Maar we waarschijnlijk niet doen echt een gevoel van wat 125 00:07:01,000 --> 00:07:02,870 de grootte van dit getal is echt. 126 00:07:02,870 --> 00:07:06,150 We hebben geen idee wat het zou overeenkomen met een decimaal. 127 00:07:06,150 --> 00:07:09,744 En in feite zullen we niet eens zien wat het correspondeert met in decimale nu. 128 00:07:09,744 --> 00:07:11,660 We zouden in staat zijn om drukken deze op een wijze die 129 00:07:11,660 --> 00:07:15,640 zou ons wat meer informatie geven over hoe groot dit aantal is. 130 00:07:15,640 --> 00:07:17,270 >> Dus laten we naar die conversie proces. 131 00:07:17,270 --> 00:07:19,311 Het eerste wat we nodig hebben te doen is dat we willen groep 132 00:07:19,311 --> 00:07:23,050 deze cijfers uit in groepen van 4, beginnend van rechts 133 00:07:23,050 --> 00:07:24,120 en werken naar links. 134 00:07:24,120 --> 00:07:27,260 Er toevallig 32 cijfers hier, wat betekent dat we 135 00:07:27,260 --> 00:07:33,210 een mooie schone onderbreking van 8 groepen van 4. 136 00:07:33,210 --> 00:07:36,200 Herinner dat elke groep 4 hier, uniek correspondeert 137 00:07:36,200 --> 00:07:37,760 naar een hexadecimaal getal. 138 00:07:37,760 --> 00:07:42,080 Dus zullen we weer beginnen met het bouwen van onze nummer van rechts en links werken. 139 00:07:42,080 --> 00:07:44,890 Tja, wat is 1101? 140 00:07:44,890 --> 00:07:49,220 Nou wij doen de wiskunde in ons hoofd, we hebben 1 in de plaats achten, een 1 141 00:07:49,220 --> 00:07:54,310 in de fours plaats, een 0 in tweeën plaats, en een 1 op degenen plaats. 142 00:07:54,310 --> 00:07:58,820 Dat is 8 plus 4 plus 1, die we zouden kennen als 13. 143 00:07:58,820 --> 00:08:02,400 Maar we waarschijnlijk niet zou schrijven 13 uit, omdat we werken met hexadecimale. 144 00:08:02,400 --> 00:08:07,982 We moeten om te zetten naar de hexadecimale equivalent 13, dat d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, goed, dat is een 0 in het achten plaats, een 0 in fours plaats, 146 00:08:12,940 --> 00:08:15,190 een 1 in de tweeën plaats, en een 1 op degenen plaats. 147 00:08:15,190 --> 00:08:16,880 Dat is 3. 148 00:08:16,880 --> 00:08:20,180 Ik bedoel dit blijven doen Nogmaals, we hebben hier 9. 149 00:08:20,180 --> 00:08:23,850 En dan 11, maar dat is b, recall. 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 zo dat zeer grote reeks van 0 en 1 is de top 152 00:08:34,669 --> 00:08:38,549 is meer bondig uitgedrukt hexadecimaal als 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Nou, OK, we hebben geleerd een nieuwe koele vaardigheid, wat is het punt? 155 00:08:45,870 --> 00:08:49,560 We kunnen niet Gebruik alle tijd, zoals we zullen binnenkort te zien, 156 00:08:49,560 --> 00:08:52,370 we gebruiken hexadecimale vrij veel programmeurs. 157 00:08:52,370 --> 00:08:55,060 Die niet noodzakelijk voor de doel van het doen van wiskunde met het, 158 00:08:55,060 --> 00:08:58,470 maar omdat een heleboel keer geheugenadressen in ons systeem 159 00:08:58,470 --> 00:09:00,440 zijn weergegeven in hexadecimaal. 160 00:09:00,440 --> 00:09:04,390 Het is echt een beknopte manier uit te drukken anders omslachtig binaire getallen. 161 00:09:04,390 --> 00:09:06,440 En dus, nogmaals, mag u niet-- bent u waarschijnlijk 162 00:09:06,440 --> 00:09:07,640 niet van plan om geen wiskunde te doen met het, je bent niet 163 00:09:07,640 --> 00:09:09,848 gaat worden vermenigvuldigen hexadecimale getallen met elkaar, 164 00:09:09,848 --> 00:09:11,770 of iets raar als dat te doen. 165 00:09:11,770 --> 00:09:16,120 Maar het is een nuttige vaardigheid te hebben dus je kunt verwoorden en te begrijpen 166 00:09:16,120 --> 00:09:23,290 geheugen adressen en andere manieren om data in C. 167 00:09:23,290 --> 00:09:26,240 >> Ik ben Doug Lloyd, dit is CS50. 168 00:09:26,240 --> 00:09:28,028