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 використовувати десяткову сістема-- базу 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 з бінарному сістема-- підставою 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-- а, B, C, D, E, 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 в якості капіталу А 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 І 1 111 відповідає щоб шістнадцяткова цифра F. 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 Десяткова 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 Очевидно, що для старших розрядів а, б, C, 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 Вона також має місце, але замість цього значення буття повноважень або повноважень 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 Це шістнадцяткове номер три-девять-сім. 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 A 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 АЦП, добре, що це раз 16 в квадраті. 99 00:05:34,050 --> 00:05:38,220 Або, якщо ми переводимо, що нашим уявленням десяткових чисел, що в 10 разів 100 00:05:38,220 --> 00:05:44,160 16 в квадраті, плюс D раз 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 АЦП. 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 це почати групуючи їх право наліво, як групи по 4. 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 груп по 4. 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 І так, знову ж таки, ви можете не-- ви, ймовірно, 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