1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN JOZWIAK: Type steypu, í einföldustu merkingu, er 2 00:00:10,270 --> 00:00:13,300 leið til að breyta túlkun a tölva 'af einhverjum gögnum með 3 00:00:13,300 --> 00:00:16,560 beint eða óbeint að breyta gögn tegund þess. 4 00:00:16,560 --> 00:00:19,940 Svo sem eins og að breyta við int að fljóta, eða öfugt. 5 00:00:19,940 --> 00:00:21,550 Til að skilja tegund steypu þurfum við að 6 00:00:21,550 --> 00:00:22,680 byrja með grunnatriði - 7 00:00:22,680 --> 00:00:24,140 gagnatög sjálfir. 8 00:00:24,140 --> 00:00:26,960 Í tungumálum tölva eins og C, allir breytur einhverskonar 9 00:00:26,960 --> 00:00:29,690 gögn gerð sem ákvarðar hvernig tölva, og sömuleiðis 10 00:00:29,690 --> 00:00:32,140 notandi, túlkar þá breytu. 11 00:00:32,140 --> 00:00:35,160 Töluleg gögn tegundir eins og int, langur langur, fljóta og 12 00:00:35,160 --> 00:00:38,110 tvöfaldur, allir hafa sinn einstaka þeirra eiginleika og eru 13 00:00:38,110 --> 00:00:41,370 notað til að skilgreina gildi mismunandi svið og nákvæmni. 14 00:00:41,370 --> 00:00:44,800 Type steypu gerir okkur kleift að taka fleytitölu númer eins og 15 00:00:44,800 --> 00:00:49,170 3.14 og fá hluti fyrir tugabrot, 3 í þessu tilfelli, 16 00:00:49,170 --> 00:00:51,590 af steypu það heiltala. 17 00:00:51,590 --> 00:00:53,900 Við skulum taka dæmi af ensku fyrir stutt 18 00:00:53,900 --> 00:00:56,910 endurskoða gerðir, og til að sjá hvernig gerð steypu getur breyst 19 00:00:56,910 --> 00:00:59,380 hvernig við túlka a stykki af gögn. 20 00:00:59,380 --> 00:01:05,269 Fyrir gögn, við skulum taka tákn hér. 21 00:01:05,269 --> 00:01:07,570 Ég vísa bara til þessa vel uppsettu línur sem 22 00:01:07,570 --> 00:01:10,100 tákn, en eins og einhver sem þekkir ensku, 23 00:01:10,100 --> 00:01:12,750 þú kannast strax að þeir eru í raun, bréf. 24 00:01:12,750 --> 00:01:15,580 Þú skilja óbeint gögn tegund. 25 00:01:15,580 --> 00:01:17,620 Skoða þetta band af bréfum sem við getum séð tvær 26 00:01:17,620 --> 00:01:20,140 mismunandi orð, hvert með eigin skilningi hennar. 27 00:01:20,140 --> 00:01:25,530 Það er nafnorð, vindur, eins og í vindi höggum utan. 28 00:01:25,530 --> 00:01:28,280 Og það er sögnin, vindur, eins og ég þarf að 29 00:01:28,280 --> 00:01:31,410 vindur hliðstæða úrið mitt. 30 00:01:31,410 --> 00:01:33,420 Þetta er áhugavert dæmi, vegna þess að við getum séð 31 00:01:33,420 --> 00:01:36,270 hvernig gerð sem við gefum okkar gögn, hvort sem nafnorð eða 32 00:01:36,270 --> 00:01:39,080 sögn, breytingar hvernig við notum þessi gögn - 33 00:01:39,080 --> 00:01:41,730 sem orðið vindi eða vindur. 34 00:01:41,730 --> 00:01:44,100 Þó að tölva er ekki sama um málfræði og hlutar 35 00:01:44,100 --> 00:01:47,750 á ensku ræðu, sömu undirstöðu lögmál gildir. 36 00:01:47,750 --> 00:01:50,290 Það er, getum við breytt túlkun nákvæmlega 37 00:01:50,290 --> 00:01:53,140 sömu gögn sem eru geymd í minni með steypu einfaldlega það til a 38 00:01:53,140 --> 00:01:54,576 mismunandi gerð. 39 00:01:54,576 --> 00:01:57,250 Hér eru stærðir af algengustu tegundum á a 32-bita 40 00:01:57,250 --> 00:01:58,340 stýrikerfi. 41 00:01:58,340 --> 00:02:02,070 Við höfum bleikju á 1 bæti, int og fljóta á 4 bytes, A Long 42 00:02:02,070 --> 00:02:04,390 langur og tvöfalda á 8 bæti. 43 00:02:04,390 --> 00:02:07,670 Vegna int tekur upp 4 bæti, mun það taka upp 32 bita 44 00:02:07,670 --> 00:02:10,060 þegar það er geymt í minni sem tvöfaldur röð 45 00:02:10,060 --> 00:02:11,500 af núllum og sjálfur. 46 00:02:11,500 --> 00:02:14,020 Svo lengi sem breytu okkar enn sem gerð INT, sem 47 00:02:14,020 --> 00:02:16,740 tölva mun alltaf breyta þeim sjálfur og núll frá 48 00:02:16,740 --> 00:02:19,120 tvöfaldur í upprunalegu númer. 49 00:02:19,120 --> 00:02:21,270 Hins vegar gætum við fræðilega kastað þeim 32 50 00:02:21,270 --> 00:02:23,510 bitar í röð Boolean gerðum. 51 00:02:23,510 --> 00:02:26,090 Og þá tölvan mun aldrei framar sjá númer, en 52 00:02:26,090 --> 00:02:28,810 stað safn af núllum og sjálfur. 53 00:02:28,810 --> 00:02:31,570 Við gætum líka reynt að lesa þessi gögn sem annar tölustafir 54 00:02:31,570 --> 00:02:34,660 tegund, eða jafnvel eins og a band af fjórum stöfum. 55 00:02:34,660 --> 00:02:37,820 Þegar fjallað með númerum í steypu, verður þú að íhuga hvernig 56 00:02:37,820 --> 00:02:40,470 nákvæmni gildi munu verða fyrir áhrifum. 57 00:02:40,470 --> 00:02:43,240 Hafðu í huga að nákvæmni geta vera sú sama, 58 00:02:43,240 --> 00:02:47,150 eða þú getur missa nákvæmni, en þú getur aldrei fá nákvæmni. 59 00:02:47,150 --> 00:02:49,060 Við skulum fara í gegnum fyrir þremur algengustu leiðir sem hægt 60 00:02:49,060 --> 00:02:50,400 missa nákvæmni. 61 00:02:50,400 --> 00:02:53,060 Kasta fljóta að heiltala mun valda truncation af öllu 62 00:02:53,060 --> 00:02:54,900 eftir kommu, svo þú ert vinstri 63 00:02:54,900 --> 00:02:55,950 með heilu tölu. 64 00:02:55,950 --> 00:03:02,000 Ef við tökum fljóta x sem jafnan 3,7, getum við rekið 65 00:03:02,000 --> 00:03:05,580 breytu x til INT því að skrifa einfaldlega int í 66 00:03:05,580 --> 00:03:07,050 sviga. 67 00:03:07,050 --> 00:03:10,010 Alltaf þegar við notum þetta orð hérna, munum við í raun 68 00:03:10,010 --> 00:03:12,810 vera með gildi þremur vegna þess að við höfum stytt 69 00:03:12,810 --> 00:03:14,880 allt eftir kommu. 70 00:03:14,880 --> 00:03:17,210 Við getum einnig umbreyta fyrir lengi að heiltala, sem mun 71 00:03:17,210 --> 00:03:20,760 álíka leiða til tap af hár-röð bita. 72 00:03:20,760 --> 00:03:23,910 A langur langur tekur upp 8 bæti eða 64 bita í minni. 73 00:03:23,910 --> 00:03:27,050 Svo þegar við kastaði hann til INT sem aðeins hefur 4 bæti, eða 32 74 00:03:27,050 --> 00:03:29,820 bits, við erum í raun chopping burt alla bita að 75 00:03:29,820 --> 00:03:32,420 tákna hærri tvöfaldur gildi. 76 00:03:32,420 --> 00:03:34,690 Þú getur einnig kastað tvöfalt að fljóta, sem gefa 77 00:03:34,690 --> 00:03:37,340 þú næst hægt fljóta í tveggja manna herbergi án 78 00:03:37,340 --> 00:03:39,100 endilega dregið það. 79 00:03:39,100 --> 00:03:41,840 Líkur til lengi lengi okkar til int viðskipti, tap á 80 00:03:41,840 --> 00:03:44,890 nákvæmni er vegna þess að tvöfalda inniheldur fleiri gögn. 81 00:03:44,890 --> 00:03:47,910 A tvöfaldur mun leyfa þér að geyma 53 verulega bita, 82 00:03:47,910 --> 00:03:50,650 u.þ.b. 16 veruleg tölustafir. 83 00:03:50,650 --> 00:03:53,050 Þar sem fljóta mun aðeins leyfa þér að geyma 24 84 00:03:53,050 --> 00:03:56,235 verulegar bits, u.þ.b. sjö verulegar tölustafir. 85 00:03:56,235 --> 00:03:58,700 Í þessum tveimur síðustu tilvikum getur verið gagnlegt að hugsa um 86 00:03:58,700 --> 00:04:01,200 gerð steypu sem resizing myndir. 87 00:04:01,200 --> 00:04:03,860 Þegar þú ferð af stórum stærð í litlu stærð, getur þú ekki séð 88 00:04:03,860 --> 00:04:05,600 hlutina eins greinilega vegna þess að þú tapað gögnum 89 00:04:05,600 --> 00:04:07,530 í formi punkta. 90 00:04:07,530 --> 00:04:09,270 Type steypu getur einnig valdið vandræðum þegar við 91 00:04:09,270 --> 00:04:11,050 kastað ints að fljóta. 92 00:04:11,050 --> 00:04:13,920 Þar flýtur um á 32-bita vél hefur aðeins 24 93 00:04:13,920 --> 00:04:16,959 veruleg bits, geta þeir ekki nákvæmlega tákna gildi 94 00:04:16,959 --> 00:04:22,750 rúmlega 2 á vald 24, eða 16777217. 95 00:04:22,750 --> 00:04:25,540 Nú skulum tala um skýr og óbeina steypu. 96 00:04:25,540 --> 00:04:28,000 Skýr steypu er þegar við skrifa tegund í sviga 97 00:04:28,000 --> 00:04:29,430 fyrir breytu nafn. 98 00:04:29,430 --> 00:04:33,100 Sem dæmi má nefna að áður en við skrifuðum int í sviga fyrir okkar 99 00:04:33,100 --> 00:04:35,640 fljóta breytu x. 100 00:04:35,640 --> 00:04:37,200 Á þennan hátt, fá við int gildi, 101 00:04:37,200 --> 00:04:38,593 styttu verðmæti 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Óbeina steypu er þegar þýðandinn sjálfkrafa 104 00:04:42,970 --> 00:04:46,340 svipaðar tegundir til frábær tegund, eða framkvæma einhver önnur tegund af 105 00:04:46,340 --> 00:04:48,310 steypu án þess að krefjast þess að notandi til að skrifa 106 00:04:48,310 --> 00:04:49,720 allir viðbótar kóða. 107 00:04:49,720 --> 00:04:53,550 Til dæmis, þegar við bætum 5 og 1,1, hafa gildi okkar þegar 108 00:04:53,550 --> 00:04:55,680 gerðir í tengslum við þá. 109 00:04:55,680 --> 00:04:59,480 The 5 er int, en 1,1 er fljóta. 110 00:04:59,480 --> 00:05:02,390 Til að bæta þeim, tölvan kastar 5 í flot, 111 00:05:02,390 --> 00:05:04,530 sem hefði verið það sama og að skrifa 5,0 í 112 00:05:04,530 --> 00:05:06,476 fyrsta sæti. 113 00:05:06,476 --> 00:05:13,210 En þessi leið við að segja fljóta 5, eða 5,0, plús hvað var þegar 114 00:05:13,210 --> 00:05:16,960 a fljóta, 1,1, og þaðan getum við í raun að bæta þessum 115 00:05:16,960 --> 00:05:18,640 gildi og fá verðmæti 6,1. 116 00:05:21,170 --> 00:05:23,500 Óbeina steypu einnig leyfa okkur að úthluta breytum á 117 00:05:23,500 --> 00:05:25,590 mismunandi gerðir við hvert annað. 118 00:05:25,590 --> 00:05:28,110 Við getum alltaf úthluta minna nákvæmari gerð í meira 119 00:05:28,110 --> 00:05:29,250 nákvæmlega einn. 120 00:05:29,250 --> 00:05:37,060 Til dæmis, ef við höfum tvöfalt x, og int y - 121 00:05:37,060 --> 00:05:40,120 og þetta gæti hafa allir gildi sem við setjum þá til - 122 00:05:40,120 --> 00:05:43,560 við getum sagt x er jafnt y. 123 00:05:43,560 --> 00:05:46,340 Vegna þess að tvöfaldur hefur meiri nákvæmni en heiltala, þannig að við 124 00:05:46,340 --> 00:05:48,380 ekki missa neinar upplýsingar. 125 00:05:48,380 --> 00:05:50,420 Á hinn bóginn, það vildi ekki endilega að vera rétt að segja 126 00:05:50,420 --> 00:05:54,060 Y jafngildir x, því tvöfaldur gæti hafa stærri gildi en 127 00:05:54,060 --> 00:05:55,220 í heiltölu. 128 00:05:55,220 --> 00:05:57,420 Og svo heiltölu might ekki vera fær um að halda öllum 129 00:05:57,420 --> 00:05:59,560 upplýsingar sem geymdar eru í tvöfalt. 130 00:05:59,560 --> 00:06:02,610 Óbeina steypu er einnig notað í samanburði rekstraraðila eins 131 00:06:02,610 --> 00:06:06,410 meira en, minna en, eða jöfn rekstraraðila. 132 00:06:06,410 --> 00:06:13,050 Þannig að við getum sagt ef 5,1 er meira en 5, og við fá 133 00:06:13,050 --> 00:06:14,750 leiða satt. 134 00:06:14,750 --> 00:06:18,470 Vegna 5 er int, en það mun verða varpað til flot í því skyni að 135 00:06:18,470 --> 00:06:22,090 verið miðað við fljóta 5.1, viljum við segja að 5,1 sé 136 00:06:22,090 --> 00:06:24,550 meiri en 5,0. 137 00:06:24,550 --> 00:06:31,320 Sama gildir með að segja hvort 2,0 jafngildir jafngildir 2. 138 00:06:31,320 --> 00:06:34,190 Við viljum einnig fá satt, vegna þess að tölvan mun kastaði 139 00:06:34,190 --> 00:06:39,750 heiltala 2 að fljóta og þá segja 2,0 jafngildir jafngildir 2,0, 140 00:06:39,750 --> 00:06:41,660 þetta er satt. 141 00:06:41,660 --> 00:06:44,180 Ekki gleyma því að við getum líka kastað á milli ints og chars, 142 00:06:44,180 --> 00:06:46,350 eða ASCII gildi. 143 00:06:46,350 --> 00:06:49,690 Chars þarf einnig að minnka tvöfaldur, sem er hvers vegna þú 144 00:06:49,690 --> 00:06:51,920 geta auðveldlega umbreyta á milli chars og viðkomandi þeirra 145 00:06:51,920 --> 00:06:53,260 ASCII gildi. 146 00:06:53,260 --> 00:06:56,180 Til að læra meira um þetta, skrá sig út vídeó okkar á ASCII. 147 00:06:56,180 --> 00:06:58,080 Þegar þú taka a augnablik til að hugsa um hvernig gögn er geymd, 148 00:06:58,080 --> 00:06:59,990 það byrjar að gera mikið af skilningi. 149 00:06:59,990 --> 00:07:02,790 Það er bara eins og munurinn á milli vindi og vindur. 150 00:07:02,790 --> 00:07:05,490 Gögnin eru þau sömu, en tegund getur breytt því hvernig við 151 00:07:05,490 --> 00:07:06,720 túlka það. 152 00:07:06,720 --> 00:07:10,430 Ég heiti Jordan Jozwiak þetta cs50.