1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 Дъг LLYOYD: Така шестнадесетични числа, като че ли ние нужда друга база брой 3 00:00:08,510 --> 00:00:09,970 схема нали? 4 00:00:09,970 --> 00:00:13,000 Е, повечето западни култури, както може би сте запознати, 5 00:00:13,000 --> 00:00:16,560 използвате десетичната system-- база 10, за да представляват числови данни. 6 00:00:16,560 --> 00:00:20,520 Имаме а цифрата 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 И ако ние трябва да представлява стойности по-високи от девет, 8 00:00:23,890 --> 00:00:26,800 ние можем да комбинираме тези цифри използване на понятието за място стойност. 9 00:00:26,800 --> 00:00:30,115 Така в продължение на 10, ние имаме 1 цифри, последван от 0 цифри 10 00:00:30,115 --> 00:00:32,240 и ние интуитивно разбират че това, което правим 11 00:00:32,240 --> 00:00:35,500 там е, че ние се умножи първата 1 с 10, 12 00:00:35,500 --> 00:00:37,689 и след това добавяне 0 в продължение на общо 10. 13 00:00:37,689 --> 00:00:40,480 Компютри направят нещо доста подобни, както може би сте запознати, 14 00:00:40,480 --> 00:00:42,409 с двоичен system-- основата 2. 15 00:00:42,409 --> 00:00:44,700 Разликата да е че има само 2 цифри 16 00:00:44,700 --> 00:00:46,770 да работят with-- 0 и 1. 17 00:00:46,770 --> 00:00:49,033 И така, нашето място стойности, вместо да бъде един, 18 00:00:49,033 --> 00:00:52,600 десет, сто, хиляда, тъй като те ще бъде в десетичната система, 19 00:00:52,600 --> 00:00:57,690 са един, два, четири, осем и така нататък. 20 00:00:57,690 --> 00:01:00,842 Ето нещо все пак, тези 0 и 1, особено 21 00:01:00,842 --> 00:01:03,800 ако сме в компютърните специалисти и правим много програмиране 22 00:01:03,800 --> 00:01:06,924 или работа с компютри, щяха да се виждаме много двоични числа. 23 00:01:06,924 --> 00:01:11,660 И тези, 0 и 1 е в големите вериги може да бъде много трудно да се направи разбор. 24 00:01:11,660 --> 00:01:16,610 Не можем просто да погледнете низ от 0 и 1 и да знае 25 00:01:16,610 --> 00:01:17,810 какво точно е това. 26 00:01:17,810 --> 00:01:21,980 Но тя все още е полезно да бъде в състояние експресни данни по същия начин, 27 00:01:21,980 --> 00:01:23,480 че прави компютър. 28 00:01:23,480 --> 00:01:26,580 Ние имаме тази идея на шестнайсетична система, която е 29 00:01:26,580 --> 00:01:29,840 база 16, вместо 10 база или основа 2. 30 00:01:29,840 --> 00:01:34,420 Което означава, че имаме 16 цифри да работи с вместо 10 или 2. 31 00:01:34,420 --> 00:01:37,180 И това е много по- кратък начин да изразя 32 00:01:37,180 --> 00:01:41,210 двоична информация в компютърна система, това е много по-човешки разбираемо. 33 00:01:41,210 --> 00:01:43,520 Така че ние имаме цифри От 0 до 9, и след това 34 00:01:43,520 --> 00:01:49,480 ние също имаме тези допълнителни шест digits-- а, В, С, D, Е и F, които представляват 10, 35 00:01:49,480 --> 00:01:56,050 нашата представа за 10, 11, 12, 13, 14 и 15, в знак. 36 00:01:56,050 --> 00:01:59,787 Понякога, между другото, вие също така ще виж това извеждащ F за столица A 37 00:01:59,787 --> 00:02:01,620 чрез F, което е най- начин Склонен съм да го направя. 38 00:02:01,620 --> 00:02:04,560 Това е просто моята предпочитана стил, но нито е добре, 39 00:02:04,560 --> 00:02:07,870 те представляват и двата доста много по едно и също нещо. 40 00:02:07,870 --> 00:02:09,090 >> Така че, защо е в шестнадесетичен вид готино? 41 00:02:09,090 --> 00:02:11,580 Защо имаме нужда да използвате тази друга допълнителна база? 42 00:02:11,580 --> 00:02:14,310 Ние вече имаме 2 и 10, защо имаме нужда от 16? 43 00:02:14,310 --> 00:02:21,650 Е 16 е с мощност от 2, и т.н. всеки шестнадесетичен цифрен, от 0 до F, 44 00:02:21,650 --> 00:02:25,440 съответства на уникален поръчка, или уникална конструкция 45 00:02:25,440 --> 00:02:29,060 на 4 двоични цифри, 4 бита. 46 00:02:29,060 --> 00:02:34,570 И така, в този смисъл, можем да изразим много дълги, сложни двоични числа 47 00:02:34,570 --> 00:02:36,440 в шестнадесетичен в много по-кратък начин, 48 00:02:36,440 --> 00:02:41,080 без да се губи информация или да се налага да направя особено тромави реализации 49 00:02:41,080 --> 00:02:42,480 на тези номера. 50 00:02:42,480 --> 00:02:44,880 >> Така че, както казах, всеки шестнадесетичен цифрен 51 00:02:44,880 --> 00:02:48,630 съответства на уникален подреждане на 4 двоични цифри. 52 00:02:48,630 --> 00:02:53,670 Така че двоичен низ 0000 съответства на шестнадесетичен цифра 0. 53 00:02:53,670 --> 00:03:00,340 0110 съответства на шестнадесетичен цифра 6. 54 00:03:00,340 --> 00:03:05,225 И 1111 съответства да шестнадесетичен цифрен е. 55 00:03:05,225 --> 00:03:07,100 Ако търсите най- тази диаграма, особено 56 00:03:07,100 --> 00:03:09,099 ако търсите най- лявата страна на графиката, 57 00:03:09,099 --> 00:03:11,970 Вече можете да видите, че има малко на един проблем неяснота тук. 58 00:03:11,970 --> 00:03:15,229 Decimal 0 е доста много неразличим от шестнадесетичен 0, 59 00:03:15,229 --> 00:03:18,020 различни от факта, че това е по колона, която се казва в шестнадесетичен вид. 60 00:03:18,020 --> 00:03:22,130 >> Но ние вероятно винаги не ще имат тази колона там. 61 00:03:22,130 --> 00:03:25,420 По принцип, когато сме изразяване числа в шестнайсетична система 62 00:03:25,420 --> 00:03:28,130 да се направи ясно разграничение ги от десетична бройна система, 63 00:03:28,130 --> 00:03:31,860 ние обикновено ги префикс с префикса 0x. 64 00:03:31,860 --> 00:03:35,990 0x означава нищо в действителност, това е просто представа за нас като хора 65 00:03:35,990 --> 00:03:39,190 че това, което ние сме на път да се види, или предстои да започне разбор, 66 00:03:39,190 --> 00:03:40,750 е шестнадесетично число. 67 00:03:40,750 --> 00:03:45,590 Очевидно за по-високите цифри A, B, С, D и F, които съответстват на 10-15 68 00:03:45,590 --> 00:03:48,840 това е доста недвусмислено, че е това е шестнадесетично число. 69 00:03:48,840 --> 00:03:51,620 И в действителност, всеки шестнадесетичен номер, който има писма в нея, 70 00:03:51,620 --> 00:03:54,642 вероятно е доста очевидно, като шестнадесетично число. 71 00:03:54,642 --> 00:03:56,350 Но, все пак, за яснота, това е 72 00:03:56,350 --> 00:03:58,290 Винаги е добра идея да префикс всеки път, когато 73 00:03:58,290 --> 00:04:01,835 вижте цифра като шестнадесетичен брой от префикса 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Така че, двоичен, тъй като ние каза, има място ценности. 76 00:04:06,810 --> 00:04:10,040 Там е мястото, такива, а двама място, място, на четири крака, и осмици място. 77 00:04:10,040 --> 00:04:13,640 И десетичната също има място стойности, най- такива, десетки, стотици, а хиляди 78 00:04:13,640 --> 00:04:15,910 че всички ние може да си припомни от началното училище. 79 00:04:15,910 --> 00:04:18,050 И не е шестнадесетичен Изключение тук, наистина. 80 00:04:18,050 --> 00:04:22,660 Тя също има място стойности, но вместо това че са степени на 2 или правомощия на 10, 81 00:04:22,660 --> 00:04:25,050 те са правомощията на 16. 82 00:04:25,050 --> 00:04:29,410 >> Така ние виждаме редица харесват това ние доста ясно, че това е 397, нали? 83 00:04:29,410 --> 00:04:33,420 Ами ако ние виждаме редица по този начин, ние знаем, това вече не е 397. 84 00:04:33,420 --> 00:04:36,730 Това е шестнадесетично брой 3-9 седем. 85 00:04:36,730 --> 00:04:39,680 Това не е 397, това означава, нещо различно, 86 00:04:39,680 --> 00:04:44,180 защото ние сме с помощта на правомощия на 16 като всички на мястото ни ценности, вместо на правомощия 87 00:04:44,180 --> 00:04:45,560 10. 88 00:04:45,560 --> 00:04:50,570 В действителност, място стойности тук ще бъдат тези, мястото, на sixteens мястото, 89 00:04:50,570 --> 00:04:55,080 и двеста петдесет и шестици мястото, която съответства на нашата идея за такива 90 00:04:55,080 --> 00:04:59,180 място, десетки място, а на стотици място, ако техният брой е бил 397. 91 00:04:59,180 --> 00:05:03,620 Но тъй като това е 0x 397, имаме един от тях място, sixteens място, 92 00:05:03,620 --> 00:05:05,780 и двеста петдесет и шестици място. 93 00:05:05,780 --> 00:05:09,460 Или, 16 до 0 място, което е 1. 94 00:05:09,460 --> 00:05:12,420 16 на първата мощност мястото, 16. 95 00:05:12,420 --> 00:05:17,080 A 16 квадрат място, 256, и така нататък, и така нататък, и така нататък. 96 00:05:17,080 --> 00:05:24,400 Така че този номер е наистина 3 пъти 16 квадрат, плюс 9 пъти 16 плюс 7. 97 00:05:24,400 --> 00:05:28,980 Аз не направи по математика тук, но това не е 397, това е много, много по-голяма от тази. 98 00:05:28,980 --> 00:05:34,050 >> По същия начин, бихме могли да имаме 0x ADC, добре, че е пъти по 16 на квадрат. 99 00:05:34,050 --> 00:05:38,220 Или ако се преведе, че да представите ни на десетични числа, която е 10 пъти по- 100 00:05:38,220 --> 00:05:44,160 16 квадрат, плюс г пъти 16, или 13 пъти, плюс 16. 101 00:05:44,160 --> 00:05:47,410 И не се притеснявайте, ако не са запомнени че г е 13, или нещо подобно, 102 00:05:47,410 --> 00:05:49,201 там не е твърде много писмо от тези цифри 103 00:05:49,201 --> 00:05:52,820 и това ще стане интуитивно доста бързо. 104 00:05:52,820 --> 00:05:59,800 Така че отново това е 10 пъти по 16 на квадрат, плюс 13 пъти 16, плюс 12 пъти 1. 105 00:05:59,800 --> 00:06:03,640 Така 0x ADC. 106 00:06:03,640 --> 00:06:07,750 >> Така че, както казах, всеки група от 4 двоични цифри 107 00:06:07,750 --> 00:06:10,000 съответства на единична шестнадесетичен цифрен, 108 00:06:10,000 --> 00:06:12,570 и така това е всъщност наистина лесно да се промени и назад 109 00:06:12,570 --> 00:06:14,690 между шестнадесетичен и двоичен. 110 00:06:14,690 --> 00:06:18,310 Ако имате този дълъг низ от двоични цифри, всичко, което трябва да направите, 111 00:06:18,310 --> 00:06:21,320 се започне групирането им полето да остави като групи от по четири. 112 00:06:21,320 --> 00:06:26,550 А след това можете да се консолидира тях в шестнадесетичен вид, 113 00:06:26,550 --> 00:06:30,910 силно ограничаване на броя на Цифрите трябва да обработим психически. 114 00:06:30,910 --> 00:06:33,680 Вместо 32 0 и 1 на, както ще видим в секунда, 115 00:06:33,680 --> 00:06:37,630 може да сте в състояние да го стигнете до само 8 шестнадесетични цифри, много 116 00:06:37,630 --> 00:06:39,200 по-кратки. 117 00:06:39,200 --> 00:06:43,500 >> Графиките няколко слайда назад няма да ви помогне да разбера това картографиране, 118 00:06:43,500 --> 00:06:45,660 въпреки че, отново ли ще я запомняте доста бързо. 119 00:06:45,660 --> 00:06:47,320 Ние ще мине през един пример точно сега. 120 00:06:47,320 --> 00:06:51,507 Така че, ако ние имаме редица по този начин, това наистина голяма двоично число, 121 00:06:51,507 --> 00:06:53,340 или това, което изглежда голям двоично число. 122 00:06:53,340 --> 00:06:56,260 И причината аз да кажа, че това е Просто so-- това е гигант, нали? 123 00:06:56,260 --> 00:06:58,959 Има толкова много за 0 и 1 е там. 124 00:06:58,959 --> 00:07:01,000 Но ние вероятно не правим наистина има чувство за това, което 125 00:07:01,000 --> 00:07:02,870 величината на този брой е наистина. 126 00:07:02,870 --> 00:07:06,150 Ние нямаме никаква представа какво е ще съответства на десетична. 127 00:07:06,150 --> 00:07:09,744 И всъщност ние дори няма да видите това, което съответства в десетичен точно сега. 128 00:07:09,744 --> 00:07:11,660 Може би ще успеем да изразя това по начин, който 129 00:07:11,660 --> 00:07:15,640 ще ни даде малко повече информация за това колко голям е този брой. 130 00:07:15,640 --> 00:07:17,270 >> Така че нека да отиде в тази процеса на конвертиране. 131 00:07:17,270 --> 00:07:19,311 Първото нещо, което трябва да направите, е да искаме да група 132 00:07:19,311 --> 00:07:23,050 тези цифри място в групи на 4, започвайки от правото 133 00:07:23,050 --> 00:07:24,120 и работи на ляво. 134 00:07:24,120 --> 00:07:27,260 Там се случи да бъде 32 цифри тук, което означава, имаме 135 00:07:27,260 --> 00:07:33,210 хубава чиста прекъсване от 8 групи от по четири. 136 00:07:33,210 --> 00:07:36,200 Не забравяйте, че всяка група 4 тук, еднозначно съответства 137 00:07:36,200 --> 00:07:37,760 да шестнадесетичен цифра. 138 00:07:37,760 --> 00:07:42,080 Така че ние ще започнем отново изграждаме номер отдясно и отляво на работа. 139 00:07:42,080 --> 00:07:44,890 Ами това, което е 1101? 140 00:07:44,890 --> 00:07:49,220 Ами ние направи по математика в главата ни, имаме 1 в осмици място, а 1 141 00:07:49,220 --> 00:07:54,310 в мястото на четири крака, а 0 в вторите място, и 1 в такива мястото. 142 00:07:54,310 --> 00:07:58,820 Това е 8 плюс 4 плюс 1, които щяхме да знаем като 13. 143 00:07:58,820 --> 00:08:02,400 Но ние вероятно няма да пиша 13, защото ние работим с шестнадесетичен. 144 00:08:02,400 --> 00:08:07,982 Ние трябва да го конвертирате в шестнадесетичен еквивалентен на 13, което е г. 145 00:08:07,982 --> 00:08:12,940 >> 0011, добре, че е 0 в осмици място, а 0 в четири крака място, 146 00:08:12,940 --> 00:08:15,190 1 в двойки място, и 1 в такива място. 147 00:08:15,190 --> 00:08:16,880 Това е 3. 148 00:08:16,880 --> 00:08:20,180 Искам да кажа, продължаваш да правиш това отново, което имаме тук 9. 149 00:08:20,180 --> 00:08:23,850 И след това 11, но това е б, изземване. 150 00:08:23,850 --> 00:08:30,570 2, 10-- или A-- 6 и 4. 151 00:08:30,570 --> 00:08:34,669 И така, че много голям низ от 0 и 1 на върха на 152 00:08:34,669 --> 00:08:38,549 е по-лаконично изразено в шестнадесетичен като 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Е, добре, което сме научили нов готино умения, какъв е смисълът? 155 00:08:45,870 --> 00:08:49,560 Ние може да не се използва това през цялото време, тъй като ние ще се видим скоро, 156 00:08:49,560 --> 00:08:52,370 ние използваме доста шестнадесетичен много като програмисти. 157 00:08:52,370 --> 00:08:55,060 Не е задължително за целта на правене на математика с него, 158 00:08:55,060 --> 00:08:58,470 но тъй като много пъти памет адреси в нашата система 159 00:08:58,470 --> 00:09:00,440 са представени в шестнадесетичен вид. 160 00:09:00,440 --> 00:09:04,390 Това е наистина кратък начин да изразя иначе тромави, двоични числа. 161 00:09:04,390 --> 00:09:06,440 И така, отново, вие може not-- вие вероятно сте 162 00:09:06,440 --> 00:09:07,640 няма да направя някоя математика с него, не сте 163 00:09:07,640 --> 00:09:09,848 Ще бъде умножаване шестнадесетични числа заедно, 164 00:09:09,848 --> 00:09:11,770 или прави нещо странно подобно. 165 00:09:11,770 --> 00:09:16,120 Но това е полезно умение, за да получите така че можете да изразят и да разберат 166 00:09:16,120 --> 00:09:23,290 памет адреси, както и друга начини за използване на данни в C. 167 00:09:23,290 --> 00:09:26,240 >> Аз съм Дъг Лойд, това е CS50. 168 00:09:26,240 --> 00:09:28,028