1 00:00:05,511 --> 00:00:07,740 DUGS LOJIDS: Tātad heksadecimālie skaitļi, it kā mums būtu vajadzīga 2 00:00:07,740 --> 00:00:09,970 cita bāzes skaitļu shēma, vai ne? 3 00:00:09,970 --> 00:00:13,265 Lielākā daļa Rietumu kultūru, kā jūs droši vien jau zināt, izmanto 4 00:00:13,265 --> 00:00:16,560 decimālo sistēmu — 10 kā bāzi, lai attēlotu skaitliskos datus. 5 00:00:16,560 --> 00:00:20,520 Mums ir cipari 0, 1, 2, 3, 5, 6, 7, 8, 9. 6 00:00:20,520 --> 00:00:23,660 Un, ja mums ir jāatspoguļo vērtības, kas ir lielākas par deviņām, mēs 7 00:00:23,660 --> 00:00:26,800 varam apvienot šos ciparus, izmantojot vietvērtības jēdzienu. 8 00:00:26,800 --> 00:00:30,429 Tātad attiecībā uz 10 mums ir 1 cipars, kam seko 0, un mēs intuitīvi 9 00:00:30,429 --> 00:00:34,059 saprotam, ka tas, ko mēs tur darām ir, pirmo 1 reizinām ar 10 un pēc 10 00:00:34,059 --> 00:00:37,689 tam pievienojam 0, lai kopā iegūtu 10. 11 00:00:37,689 --> 00:00:40,049 Datori dara kaut ko diezgan līdzīgu, kā jūs droši vien esat pazīstami 12 00:00:40,049 --> 00:00:42,409 ar bināro sistēmu — 2 kā bāzi. 13 00:00:42,409 --> 00:00:46,770 Atšķirība ir tāda, ka ir jāstrādā tikai ar 2 cipariem — 0 un 1. 14 00:00:46,770 --> 00:00:50,410 Un tātad mūsu vietvērtības tā vietā, lai būtu viens, desmit, simts, 15 00:00:50,410 --> 00:00:54,050 tūkstotis, kā tās būtu decimālajā sistēmā, ir viens, divi, četri, 16 00:00:54,050 --> 00:00:57,690 astoņi utt. 17 00:00:57,690 --> 00:01:00,768 Tomēr šī lieta ir tāda, ka šie 0 un 1, it īpaši, ja mēs esam 18 00:01:00,768 --> 00:01:03,846 datorzinātnieki un mēs daudz programmējam vai strādājam ar datoriem, 19 00:01:03,846 --> 00:01:06,924 mēs redzēsim daudz bināro skaitļu. 20 00:01:06,924 --> 00:01:11,660 Un tos 0 un 1 lielās ķēdēs var būt ļoti grūti analizēt . 21 00:01:11,660 --> 00:01:14,735 Mēs nevaram vienkārši aplūkot 0 un 1 virkni un noteikti precīzi 22 00:01:14,735 --> 00:01:17,810 zināt, kas tas ir. 23 00:01:17,810 --> 00:01:20,645 Bet joprojām ir noderīgi, ja var izteikt datus tādā pašā veidā, kā to 24 00:01:20,645 --> 00:01:23,480 dara dators. 25 00:01:23,480 --> 00:01:26,660 Mums ir šāds priekšstats par heksadecimālo sistēmu, kas izmanto 16 26 00:01:26,660 --> 00:01:29,840 kābāzi, nevis 10 vai 2. 27 00:01:29,840 --> 00:01:34,420 Tas nozīmē, ka mums ir jāstrādā ar 16 cipariem, nevis 10 vai 2. 28 00:01:34,420 --> 00:01:37,815 Un tas ir daudz koncentrētāks veids, kā datorsistēmā izteikt bināro 29 00:01:37,815 --> 00:01:41,210 informāciju, tas ir daudz cilvēcīgāk saprotams. 30 00:01:41,210 --> 00:01:46,156 Tātad mums ir cipari no 0 līdz 9, un tad mums ir arī šie papildu seši 31 00:01:46,156 --> 00:01:51,103 cipari - a, b, c, d, e un f, kas apzīmē 10, mūsu jēdzienu 10, 11, 12, 32 00:01:51,103 --> 00:01:56,050 13, 14 un 15, decimāldaļās. 33 00:01:56,050 --> 00:01:58,835 Dažreiz, starp citu, jūs redzēsit arī šos burtus no a līdz f kā 34 00:01:58,835 --> 00:02:01,620 lielos burtus A līdz F, kā es mēdzu to darīt. 35 00:02:01,620 --> 00:02:04,745 Tas ir tikai mans vēlamais stils, taču ir pareizi, tie abi nozīmē 36 00:02:04,745 --> 00:02:07,870 gandrīz vienu un to pašu. 37 00:02:07,870 --> 00:02:09,090 Tātad, kāpēc heksadecimāls ir foršs? 38 00:02:09,090 --> 00:02:11,580 Kāpēc mums ir jāizmanto šī cita papildu bāze? 39 00:02:11,580 --> 00:02:14,310 Mums jau ir 2 un 10, kāpēc mums vajag 16? 40 00:02:14,310 --> 00:02:19,226 Nu 16 ir 2 kāpinājums , un tāpēc katrs heksadecimālais cipars no 0 41 00:02:19,226 --> 00:02:24,143 līdz f atbilst unikālai secībai vai unikālai 4 bināro ciparu 4 bitu 42 00:02:24,143 --> 00:02:29,060 izkārtojumam. 43 00:02:29,060 --> 00:02:33,533 Un šajā ziņā mēs varam izteikt ļoti garus, sarežģītus bināros 44 00:02:33,533 --> 00:02:38,006 skaitļus heksadecimālā veidā daudz koncentrētāk , nezaudējot 45 00:02:38,006 --> 00:02:42,480 informāciju vai neveicot īpaši apgrūtinošus šo skaitļu pārveidojumus. 46 00:02:42,480 --> 00:02:45,555 Tātad, kā es tikko teicu, katrs heksadecimālais cipars atbilst 47 00:02:45,555 --> 00:02:48,630 unikālam 4 bināro ciparu izkārtojumam. 48 00:02:48,630 --> 00:02:53,670 Tātad binārā virkne 0000 atbilst heksadecimālajam ciparam 0. 49 00:02:53,670 --> 00:03:00,340 0110 atbilst heksadecimālajam ciparam 6. 50 00:03:00,340 --> 00:03:05,225 Un 1111 atbilst heksadecimālajam ciparam f. 51 00:03:05,225 --> 00:03:07,473 Ja skatāties uz šo diagrammu, it īpaši, ja skatāties uz diagrammas 52 00:03:07,473 --> 00:03:09,721 kreiso pusi, jūs jau varat redzēt, ka šeit ir neliela neskaidrības 53 00:03:09,721 --> 00:03:11,970 problēma. 54 00:03:11,970 --> 00:03:14,995 Decimālskaitlis 0 gandrīz neatšķiras no heksadecimālās 0, izņemot to, 55 00:03:14,995 --> 00:03:18,020 ka tas atrodas zem kolonnas, kurā ir norādīts heksadecimāls. 56 00:03:18,020 --> 00:03:22,130 Bet mums, iespējams, ne vienmēr būs tā kolonna. 57 00:03:22,130 --> 00:03:25,373 Parasti, izsakot skaitļus heksadecimālajā apzīmējumā, lai skaidri 58 00:03:25,373 --> 00:03:28,616 atšķirtu tos no decimāldaļas, mēs parasti tos prefiksējam ar prefiksu 59 00:03:28,616 --> 00:03:31,860 0x. 60 00:03:31,860 --> 00:03:34,823 0x patiesībā neko nenozīmē, tas ir tikai pavediens mums kā cilvēkiem, 61 00:03:34,823 --> 00:03:37,786 ka tas, ko mēs tūlīt redzēsim vai sāksim analizēt, ir heksadecimāls 62 00:03:37,786 --> 00:03:40,750 skaitlis. 63 00:03:40,750 --> 00:03:44,795 Acīmredzot augstākajiem cipariem a, b, c, d un f, kas atbilst 10–15, 64 00:03:44,795 --> 00:03:48,840 ir diezgan skaidrs, ka tas ir heksadecimālais skaitlis. 65 00:03:48,840 --> 00:03:51,741 Un patiesībā jebkurš heksadecimālais skaitlis, kurā ir burti, 66 00:03:51,741 --> 00:03:54,642 iespējams, ir diezgan skaidrs kā heksadecimālais skaitlis. 67 00:03:54,642 --> 00:03:57,039 Tomēr skaidrības labad vienmēr ir ieteicams pievienot prefiksu katru 68 00:03:57,039 --> 00:03:59,437 reizi, kad atsaucat uz ciparu kā heksadecimālu skaitli, pievienojot 69 00:03:59,437 --> 00:04:01,835 prefiksu 0x. 70 00:04:04,370 --> 00:04:06,810 Tātad binārajam, kā jau teicām, ir vietvērtība. . 71 00:04:06,810 --> 00:04:08,425 Ir vieninieku vieta, divnieku vieta, četrinieku vieta un astotnieku 72 00:04:08,425 --> 00:04:10,040 vieta. 73 00:04:10,040 --> 00:04:12,975 Un decimāldaļās ir arī vietvērtības — vieninieki, desmiti, simti un 74 00:04:12,975 --> 00:04:15,910 tūkstoši, ko mēs visi varam atcerēties no pamatskolas. 75 00:04:15,910 --> 00:04:18,050 Un heksadecimāls šeit tiešām nav izņēmums. 76 00:04:18,050 --> 00:04:21,550 Tam ir arī vietvērtības, bet tā vietā, lai tās būtu kāpinājumi 2 vai 77 00:04:21,550 --> 00:04:25,050 10, tās ir 16. 78 00:04:25,050 --> 00:04:27,230 Tātad mēs redzam šādu skaitli, mēs diezgan skaidri zinām, ka tas ir 79 00:04:27,230 --> 00:04:29,410 397, vai ne? 80 00:04:29,410 --> 00:04:33,420 Ja mēs redzam šādu skaitli, mēs zinām, ka tas vairs nav 397. 81 00:04:33,420 --> 00:04:36,730 Šis ir heksadecimālais skaitlis trīs-deviņi-septiņi. 82 00:04:36,730 --> 00:04:41,220 Tas nav 397, tas nozīmē kaut ko citu, jo mēs izmantojam kāpinājumu 16 83 00:04:41,220 --> 00:04:45,710 kā visas mūsu vietvērtības , nevis kāpinājumus . Faktiski 84 00:04:45,710 --> 00:04:50,200 vietvērtības šeit būtu viena vieta, sešpadsmit vieta un divi simti 85 00:04:50,200 --> 00:04:54,690 piecdesmit. -sešinieku vieta, kas atbilst mūsu priekšstatam par 86 00:04:54,690 --> 00:04:59,180 vieninieku, desmitnieku un simtnieku vietu, ja skaitlis bija 397. 87 00:04:59,180 --> 00:05:02,480 Bet, tā kā tas ir 0x397, mums ir viena vieta, sešpadsmitnieku vieta 88 00:05:02,480 --> 00:05:05,780 un divi simti piecdesmit seši. 89 00:05:05,780 --> 00:05:09,460 Vai arī 16 uz 0 vietu, kas ir 1. 90 00:05:09,460 --> 00:05:12,420 A 16 uz pirmo kāpinājuma vietu, 16. 91 00:05:12,420 --> 00:05:17,080 16 kvadrātu vieta, 256, un tā tālāk, un tā tālāk, un tā tālāk. 92 00:05:17,080 --> 00:05:20,740 Tātad šis skaitlis tiešām ir 3 reizes 16 kvadrātā, plus 9 reizes 16, 93 00:05:20,740 --> 00:05:24,400 plus 7. 94 00:05:24,400 --> 00:05:26,690 Es šeit neskaitīju, bet tas nav 397, tas ir daudz, daudz lielāks par 95 00:05:26,690 --> 00:05:28,980 to. 96 00:05:28,980 --> 00:05:34,050 Tāpat mums varētu būt 0x adc, tas ir reizināts 16 kvadrātā. 97 00:05:34,050 --> 00:05:39,105 Vai arī, ja mēs to pārvēršam mūsu jēdzienā par decimālskaitļiem, tas 98 00:05:39,105 --> 00:05:44,160 ir 10 reizes 16 kvadrātā , plus d reizes 16 vai plus 13 reizes 16. 99 00:05:44,160 --> 00:05:48,490 Un neuztraucieties, ja neesat iegaumējis, ka d ir 13 vai tamlīdzīgi, 100 00:05:48,490 --> 00:05:52,820 šo burtu ciparu nav pārāk daudz, un tas kļūs intuitīvidiezgan ātri. 101 00:05:52,820 --> 00:05:56,310 Tātad tas atkal ir 10 reizes 16 kvadrātā , plus 13 reizes 16, plus 102 00:05:56,310 --> 00:05:59,800 12 reizes 1. 103 00:05:59,800 --> 00:06:03,640 Tātad 0x adc. 104 00:06:03,640 --> 00:06:07,323 Tātad, kā jau teicu, katra 4 bināro ciparu grupa atbilst vienam 105 00:06:07,323 --> 00:06:11,006 heksadecimālajam ciparam, un tāpēc patiesībā ir ļoti viegli mainīt 106 00:06:11,006 --> 00:06:14,690 heksadecimālo un bināro ciparu uz priekšu un atpakaļ. 107 00:06:14,690 --> 00:06:18,005 Ja jums ir šī garā bināro ciparu virkne, viss, kas jums jādara, ir 108 00:06:18,005 --> 00:06:21,320 jāsāk tos grupēt no labās puses uz kreiso kā grupas pa 4. 109 00:06:21,320 --> 00:06:26,115 Un tad jūs varat apvienot tos heksadecimālos skaitļos, nopietni 110 00:06:26,115 --> 00:06:30,910 ierobežojot savā prātā apstrādājamo ciparu skaitu. 111 00:06:30,910 --> 00:06:33,673 32 0 un 1 vietā, kā mēs redzēsim pēc sekundes, jūs varētu to 112 00:06:33,673 --> 00:06:36,436 samazināt līdz tikai 8 heksadecimālajiem cipariem, kas ir daudz 113 00:06:36,436 --> 00:06:39,200 koncentrētāk. . 114 00:06:39,200 --> 00:06:42,430 Diagrammas dažus slaidus atpakaļ palīdzēs jums izdomāt šo kartējumu, 115 00:06:42,430 --> 00:06:45,660 lai gan atkal jūs to iegaumēsit diezgan ātri. 116 00:06:45,660 --> 00:06:47,320 Mēs tūlīt apskatīsim piemēru. 117 00:06:47,320 --> 00:06:50,330 Tātad, ja mums ir šāds skaitlis, šis patiešām lielais binārais 118 00:06:50,330 --> 00:06:53,340 skaitlis vai tas, kas šķiet liels binārs skaitlis. 119 00:06:53,340 --> 00:06:54,800 Un iemesls, kāpēc es to saku, tas vienkārši ir - tas ir milzīgs kā 120 00:06:54,800 --> 00:06:56,260 briesmonis , vai ne? 121 00:06:56,260 --> 00:06:58,959 Tur ir tik daudz 0 un 1. 122 00:06:58,959 --> 00:07:00,914 Bet mums, iespējams, īsti nav nojausmas par to, kāds ir šī skaitļa 123 00:07:00,914 --> 00:07:02,870 lielums. 124 00:07:02,870 --> 00:07:06,150 Mums nav ne jausmas, kā tas atbilstu decimāldaļai. 125 00:07:06,150 --> 00:07:09,744 Un patiesībā mēs šobrīd pat neredzēsim, kam tas atbilst decimāldaļās. 126 00:07:09,744 --> 00:07:12,692 Mēs varētu to izteikt tādā veidā, kas sniegtu mums vairāk 127 00:07:12,692 --> 00:07:15,640 informācijas par to, cik liels ir šis skaitlis. 128 00:07:15,640 --> 00:07:17,270 Tātad, pāriesim pie konvertēšanas procesa. 129 00:07:17,270 --> 00:07:19,553 Pirmā lieta, kas mums jādara, ir tā, ka mēs vēlamies grupēt šos 130 00:07:19,553 --> 00:07:21,836 ciparus grupās pa 4, sākot no labās puses un virzoties uz kreiso 131 00:07:21,836 --> 00:07:24,120 pusi. 132 00:07:24,120 --> 00:07:28,665 Šeit ir 32 cipari, kas nozīmē, ka mums ir jauka tukša vieta no 8 133 00:07:28,665 --> 00:07:33,210 grupām pa 4. 134 00:07:33,210 --> 00:07:35,485 Atcerieties, ka katra 4 grupa šeit unikāli atbilst heksadecimālajam 135 00:07:35,485 --> 00:07:37,760 ciparam. 136 00:07:37,760 --> 00:07:39,920 Tāpēc mēs atkal sāksim veidot savu numuru no labās puses un strādāsim 137 00:07:39,920 --> 00:07:42,080 pa kreisi. 138 00:07:42,080 --> 00:07:44,890 Nu kas ir 1101? 139 00:07:44,890 --> 00:07:49,600 Mēs veicam matemātiku savā galvā, mums ir 1 astotnieku vietā, 1 140 00:07:49,600 --> 00:07:54,310 četrinieku vietā, 0 divnieku vietā un 1 vieninieku vietā. 141 00:07:54,310 --> 00:07:58,820 Tas ir 8 plus 4 plus 1, ko mēs zinām kā 13. 142 00:07:58,820 --> 00:08:02,400 Bet mēs droši vien neizrakstītu 13, jo mēs strādājam ar heksadecimālu. 143 00:08:02,400 --> 00:08:07,982 Mums tas ir jāpārvērš par heksadecimālo ekvivalentu 13, kas ir d. 144 00:08:07,982 --> 00:08:11,586 0011, tas ir 0 astotnieku vietā, 0 četriniekā, 1 divnieku vietā un 1 145 00:08:11,586 --> 00:08:15,190 vieninieku vietā. 146 00:08:15,190 --> 00:08:16,880 Tas ir 3. 147 00:08:16,880 --> 00:08:20,180 Es domāju, turpiniet to darīt vēlreiz, mums ir 9. 148 00:08:20,180 --> 00:08:23,850 Un tad 11, bet tas ir b, atcerieties. 149 00:08:23,850 --> 00:08:30,570 2, 10 — vai a — 6 un 4. 150 00:08:30,570 --> 00:08:34,559 Un tā, ka ļoti liela augšdaļas 0 un 1 virkne tiek precīzāk izteikta 151 00:08:34,559 --> 00:08:38,549 heksadecimālā veidā kā 0x 46a2b93d. 152 00:08:42,309 --> 00:08:45,870 Nu labi, mēs esam apguvuši jaunu foršu prasmi, kāda tam visam jēga? 153 00:08:45,870 --> 00:08:49,120 Mēs, iespējams, neizmantosim to visu laiku, kā mēs drīz to redzēsim, 154 00:08:49,120 --> 00:08:52,370 tomēr mēs kā programmētāji diezgan bieži lietojam heksadecimālus 155 00:08:52,370 --> 00:08:56,405 Ne vienmēr matemātikas nolūkos, bet gan tāpēc, ka mūsu sistēmā 156 00:08:56,405 --> 00:09:00,440 atmiņas adreses bieži tiek attēlotas heksadecimālā formā. 157 00:09:00,440 --> 00:09:02,415 Tas ir ļoti īss veids, kā izteikt citādi apgrūtinošus bināros 158 00:09:02,415 --> 00:09:04,390 skaitļus. 159 00:09:04,390 --> 00:09:06,850 Un tā, atkal, jūs nedrīkstat — jūs, iespējams, nedarīsiet nekādu 160 00:09:06,850 --> 00:09:09,310 matemātiku ar to, jūs nereizināsiet heksadecimālos skaitļus kopā vai 161 00:09:09,310 --> 00:09:11,770 nedarīsiet kaut ko tamlīdzīgu. 162 00:09:11,770 --> 00:09:17,530 Bet tā ir noderīga prasme, lai jūs varētu izteikt un saprast atmiņas 163 00:09:17,530 --> 00:09:23,290 adreses un citus datu izmantošanas veidus C. 164 00:09:23,290 --> 00:09:26,240 Es esmu Dags Loids, šis ir CS50.