1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] ЈОРДАН Јозвиак: Тип ливење, у најједноставнијем смислу, 2 00:00:10,270 --> 00:00:13,300 начин да се промени тумачење једног рачунара неких података по 3 00:00:13,300 --> 00:00:16,560 имплицитно или експлицитно мења свој тип података. 4 00:00:16,560 --> 00:00:19,940 Таква промена, као инт у флоат, или обрнуто. 5 00:00:19,940 --> 00:00:21,550 Да бисте разумели ливење типа, морамо да 6 00:00:21,550 --> 00:00:22,680 почети са основама - 7 00:00:22,680 --> 00:00:24,140 типови података самих. 8 00:00:24,140 --> 00:00:26,960 У компјутерским језицима као што су Ц, све променљиве имају неку врсту 9 00:00:26,960 --> 00:00:29,690 података типа који одређује како рачунар, а исто тако 10 00:00:29,690 --> 00:00:32,140 корисник, тумачи ту променљиву. 11 00:00:32,140 --> 00:00:35,160 Нумерички типови података, као што су инт, дуго дуго, флоат и 12 00:00:35,160 --> 00:00:38,110 двапут, сви имају своје јединствене карактеристике и да су 13 00:00:38,110 --> 00:00:41,370 користи за спецификацију вредности различитог опсега и прецизности. 14 00:00:41,370 --> 00:00:44,800 Тип ливење нам омогућава да се плутајући низ тачака као 15 00:00:44,800 --> 00:00:49,170 3.14 и добити део пре децималног зареза, 3 у овом случају, 16 00:00:49,170 --> 00:00:51,590 ливењем га на инт. 17 00:00:51,590 --> 00:00:53,900 Узмимо пример из енглеског језика за кратко 18 00:00:53,900 --> 00:00:56,910 преглед типова, и да се види како се тип ливење можете променити 19 00:00:56,910 --> 00:00:59,380 начин тумаче податак. 20 00:00:59,380 --> 00:01:05,269 За податке, узмимо овде симболе. 21 00:01:05,269 --> 00:01:07,570 Само погледајте ове пажљиво подешених линија као 22 00:01:07,570 --> 00:01:10,100 симболи, али као неко ко зна енглески језик, 23 00:01:10,100 --> 00:01:12,750 одмах признају да су они, у ствари, писма. 24 00:01:12,750 --> 00:01:15,580 Ти имплицитно разумели тип података. 25 00:01:15,580 --> 00:01:17,620 Гледајући овај низ слова можемо видети два 26 00:01:17,620 --> 00:01:20,140 различите речи, свака са сопственим смислом. 27 00:01:20,140 --> 00:01:25,530 Ту је именица, ветар, као у ветар дува напољу. 28 00:01:25,530 --> 00:01:28,280 А ту је и глагол, ветар, као иу морам да 29 00:01:28,280 --> 00:01:31,410 ветар ми аналогни сат. 30 00:01:31,410 --> 00:01:33,420 Ово је занимљив пример, јер можемо видети 31 00:01:33,420 --> 00:01:36,270 како тип који смо доделили нашим подацима, без обзира да ли именица или 32 00:01:36,270 --> 00:01:39,080 глаголске, промене како користимо те податке - 33 00:01:39,080 --> 00:01:41,730 као речи ветру или ветру. 34 00:01:41,730 --> 00:01:44,100 Иако рачунар не брине о граматици и делова 35 00:01:44,100 --> 00:01:47,750 енглеског говора, исти основни принцип. 36 00:01:47,750 --> 00:01:50,290 То је, можемо променити тумачење тачно 37 00:01:50,290 --> 00:01:53,140 Исти подаци се налазе у меморији једноставно га баца на 38 00:01:53,140 --> 00:01:54,576 другачији тип. 39 00:01:54,576 --> 00:01:57,250 Овде су величине најчешћих типова на 32-битни 40 00:01:57,250 --> 00:01:58,340 оперативни систем. 41 00:01:58,340 --> 00:02:02,070 Имамо карактер на 1 бите, инт и лебде у 4 бајта, дуго 42 00:02:02,070 --> 00:02:04,390 дуго и двоструки на 8 бајтова. 43 00:02:04,390 --> 00:02:07,670 Зато инт заузима 4 бајта, то ће потрајати 32 бита 44 00:02:07,670 --> 00:02:10,060 када се чува у меморији као бинарни низ 45 00:02:10,060 --> 00:02:11,500 нула и јединица. 46 00:02:11,500 --> 00:02:14,020 Докле год наше варијабле остаје као типа инт, општина 47 00:02:14,020 --> 00:02:16,740 Рачунар ће увек претворити те јединице и нуле од 48 00:02:16,740 --> 00:02:19,120 Бинарни у оригиналном броју. 49 00:02:19,120 --> 00:02:21,270 Међутим, теоретски могли бацити тих 32 50 00:02:21,270 --> 00:02:23,510 бита у низу Булових типова. 51 00:02:23,510 --> 00:02:26,090 А онда рачунар више не би видели број, али 52 00:02:26,090 --> 00:02:28,810 уместо колекција нула и јединица. 53 00:02:28,810 --> 00:02:31,570 Такође би могла да покуша да прочитате те податке, као другачији нумеричка 54 00:02:31,570 --> 00:02:34,660 упишите, или чак и као низ од четири карактера. 55 00:02:34,660 --> 00:02:37,820 Када се ради са бројевима у ливење, морате размотрити колико 56 00:02:37,820 --> 00:02:40,470 прецизност вашег вредности ће бити погођена. 57 00:02:40,470 --> 00:02:43,240 Имајте на уму да је прецизност остане исти, 58 00:02:43,240 --> 00:02:47,150 или можете изгубити прецизност, али никада не можете добити прецизност. 59 00:02:47,150 --> 00:02:49,060 Идемо кроз за три најчешћих начина на које можете 60 00:02:49,060 --> 00:02:50,400 губе прецизност. 61 00:02:50,400 --> 00:02:53,060 Кастинг за сплав на инт ће изазвати скраћења свега 62 00:02:53,060 --> 00:02:54,900 после децималног зареза, тако да сте отишли 63 00:02:54,900 --> 00:02:55,950 са целим бројем. 64 00:02:55,950 --> 00:03:02,000 Ако узмемо к плутају која ће бити једнака 3,7, можемо да баци 65 00:03:02,000 --> 00:03:05,580 ове променљиве к на инт једноставно писање инт у 66 00:03:05,580 --> 00:03:07,050 заграде. 67 00:03:07,050 --> 00:03:10,010 Кад год ми користимо овај израз овде, ми ћемо ефикасно 68 00:03:10,010 --> 00:03:12,810 се користи вредност три, јер смо одсецају 69 00:03:12,810 --> 00:03:14,880 све након децималног зареза. 70 00:03:14,880 --> 00:03:17,210 Такође могу да конвертују дуго дуго на инт, који ће 71 00:03:17,210 --> 00:03:20,760 Слично довести до губитка високе реда бита. 72 00:03:20,760 --> 00:03:23,910 Дуго дуго траје до 8 бајтова или 64 бита у меморији. 73 00:03:23,910 --> 00:03:27,050 Дакле, када смо га баци на инт који има само 4 бајта или 32 74 00:03:27,050 --> 00:03:29,820 бита, онда смо одсецање свих битова који 75 00:03:29,820 --> 00:03:32,420 представљају веће вредности бинарне. 76 00:03:32,420 --> 00:03:34,690 Такође можете да бацају дупло на пловак, који ће дати 77 00:03:34,690 --> 00:03:37,340 ти најближи могући пловак за двоструко без 78 00:03:37,340 --> 00:03:39,100 нужно је заокруживање. 79 00:03:39,100 --> 00:03:41,840 Слично нам дуго дуго инт конверзије, губитак у 80 00:03:41,840 --> 00:03:44,890 прецизност је зато двоструко садржи више података. 81 00:03:44,890 --> 00:03:47,910 Двапут ће вам омогућити да сачувате 53 значајне битове, 82 00:03:47,910 --> 00:03:50,650 око 16 значајних цифара. 83 00:03:50,650 --> 00:03:53,050 Док пловак ће вам омогућити да сачувате 24 84 00:03:53,050 --> 00:03:56,235 значајна бита, отприлике седам значајних цифара. 85 00:03:56,235 --> 00:03:58,700 У последње две случајевима, може бити од помоћи да смислим 86 00:03:58,700 --> 00:04:01,200 упишите кастинг као промену величине фотографија. 87 00:04:01,200 --> 00:04:03,860 Када идете из великих димензија на мале величине, ви не можете да видите 88 00:04:03,860 --> 00:04:05,600 ствари као што је јасно, јер сте изгубили податке 89 00:04:05,600 --> 00:04:07,530 у облику пиксела. 90 00:04:07,530 --> 00:04:09,270 Тип ливење такође може да изазове проблеме када смо 91 00:04:09,270 --> 00:04:11,050 баци Интс да плута. 92 00:04:11,050 --> 00:04:13,920 Пошто плута на 32-битну машину имају само 24 93 00:04:13,920 --> 00:04:16,959 значајни бита, они не могу прецизно представљају вредности 94 00:04:16,959 --> 00:04:22,750 преко 2 снази 24, односно 16777217. 95 00:04:22,750 --> 00:04:25,540 Сада ћемо да причамо о експлицитног и имплицитног ливења. 96 00:04:25,540 --> 00:04:28,000 Експлицитно ливење када пишемо тип у загради 97 00:04:28,000 --> 00:04:29,430 пре име променљиве. 98 00:04:29,430 --> 00:04:33,100 Као пример, пре него што смо написали инт у заградама пре нашег 99 00:04:33,100 --> 00:04:35,640 флоат променљиве к. 100 00:04:35,640 --> 00:04:37,200 На овај начин смо добили инт вредност, 101 00:04:37,200 --> 00:04:38,593 скраћена вредност 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Имплицитно ливење је када компајлер аутоматски мења 104 00:04:42,970 --> 00:04:46,340 сличне врсте у супер тип, или обавља неку другу врсту 105 00:04:46,340 --> 00:04:48,310 ливење без потребе корисника да напише 106 00:04:48,310 --> 00:04:49,720 све додатне код. 107 00:04:49,720 --> 00:04:53,550 На пример, када додамо 5 и 1,1, наше вредности већ имају 108 00:04:53,550 --> 00:04:55,680 Типови повезане са њима. 109 00:04:55,680 --> 00:04:59,480 5 је инт, док је 1,1 пловак. 110 00:04:59,480 --> 00:05:02,390 Да би их додали, рачунар баца 5 у пловак, 111 00:05:02,390 --> 00:05:04,530 која би била иста ствар као писање 5.0 у 112 00:05:04,530 --> 00:05:06,476 прво место. 113 00:05:06,476 --> 00:05:13,210 Али на овај начин кажемо пловак 5, или 5,0, плус оно што је већ 114 00:05:13,210 --> 00:05:16,960 плутају, 1,1, и одатле смо заправо може додати ово 115 00:05:16,960 --> 00:05:18,640 вредности и добила вредност 6.1. 116 00:05:21,170 --> 00:05:23,500 Имплицитно ливење такође омогућава нам да доделите променљиве 117 00:05:23,500 --> 00:05:25,590 Различите врсте једни другима. 118 00:05:25,590 --> 00:05:28,110 Ми увек можемо доделити мање прецизан тип у више 119 00:05:28,110 --> 00:05:29,250 прецизан један. 120 00:05:29,250 --> 00:05:37,060 На пример, ако имамо двоструки Кс и један И инт - 121 00:05:37,060 --> 00:05:40,120 и то може да има неке вредности које смо их поставили на - 122 00:05:40,120 --> 00:05:43,560 можемо рећи к једнако и. 123 00:05:43,560 --> 00:05:46,340 Зато двоструки има више прецизности него као инт, тако да смо 124 00:05:46,340 --> 00:05:48,380 неће изгубити било какву информацију. 125 00:05:48,380 --> 00:05:50,420 С друге стране, то не би нужно било исправно да се каже 126 00:05:50,420 --> 00:05:54,060 и једнако к, јер можда има двоструко већу вредност од 127 00:05:54,060 --> 00:05:55,220 природан број. 128 00:05:55,220 --> 00:05:57,420 И тако цео можда неће моћи да држи све 129 00:05:57,420 --> 00:05:59,560 информације ускладиштене у двојника. 130 00:05:59,560 --> 00:06:02,610 Имплицитно ливење се такође користи у другим операторима као 131 00:06:02,610 --> 00:06:06,410 већи од, мање од, или једнакост оператер. 132 00:06:06,410 --> 00:06:13,050 На овај начин можемо да кажемо да ли је 5,1 већа од 5, а ми смо добили 133 00:06:13,050 --> 00:06:14,750 резултат истина. 134 00:06:14,750 --> 00:06:18,470 Јер 5 је инт, али то ће бити избачен на пловак у циљу 135 00:06:18,470 --> 00:06:22,090 да се упореди са пловка 5,1, ми кажемо 5.1 је 136 00:06:22,090 --> 00:06:24,550 већи од 5,0. 137 00:06:24,550 --> 00:06:31,320 Исто важи и ако се говори 2,0 једнак једнак 2. 138 00:06:31,320 --> 00:06:34,190 Такође би се тачно, јер рачунар ће баци 139 00:06:34,190 --> 00:06:39,750 цео 2 да плутају, а онда кажу 2,0 једнако износи 2.0, 140 00:06:39,750 --> 00:06:41,660 ово је истина. 141 00:06:41,660 --> 00:06:44,180 Не заборавите да можемо бацити између Интс и карактера, 142 00:06:44,180 --> 00:06:46,350 или АСЦИИ вредности. 143 00:06:46,350 --> 00:06:49,690 Цхарс такође треба да се сведе на бинарни, што је разлог зашто 144 00:06:49,690 --> 00:06:51,920 може лако претворити између карактера и њихових 145 00:06:51,920 --> 00:06:53,260 АСЦИИ вредности. 146 00:06:53,260 --> 00:06:56,180 Да бисте сазнали више о томе, погледајте нашу видео на АСЦИИ. 147 00:06:56,180 --> 00:06:58,080 Када одвојите тренутак да размислите о томе како се подаци чувају се, 148 00:06:58,080 --> 00:06:59,990 почиње да се много смисла. 149 00:06:59,990 --> 00:07:02,790 То је исто као разлика између ветра и ветру. 150 00:07:02,790 --> 00:07:05,490 Података је исти, али можете променити тип ми како 151 00:07:05,490 --> 00:07:06,720 интерпретирати. 152 00:07:06,720 --> 00:07:10,430 Моје име је Џордан Јозвиак, ово цс50.