1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN JOZWIAK: Aina akitoa, kwa maana rahisi, ni 2 00:00:10,270 --> 00:00:13,300 njia ya kubadilisha tafsiri ya kompyuta ya baadhi ya data na 3 00:00:13,300 --> 00:00:16,560 implicitly au waziwazi kubadilisha data zake aina. 4 00:00:16,560 --> 00:00:19,940 Kama vile kubadilisha int kwa kuelea, au kinyume chake. 5 00:00:19,940 --> 00:00:21,550 Kuelewa aina akitoa, tunahitaji 6 00:00:21,550 --> 00:00:22,680 kuanza na shemu - 7 00:00:22,680 --> 00:00:24,140 data aina wenyewe. 8 00:00:24,140 --> 00:00:26,960 Katika lugha ya kompyuta kama C, kila vigezo na aina fulani 9 00:00:26,960 --> 00:00:29,690 ya data aina kwamba huamua jinsi ya kompyuta, na vivyo hivyo 10 00:00:29,690 --> 00:00:32,140 user, anatafsiri kwamba kutofautiana. 11 00:00:32,140 --> 00:00:35,160 Namba data aina kama vile int kuelea, muda mrefu, na 12 00:00:35,160 --> 00:00:38,110 mara mbili, wote wana sifa zao za kipekee na ni 13 00:00:38,110 --> 00:00:41,370 kutumika kwa bayana maadili ya tofauti kati na usahihi. 14 00:00:41,370 --> 00:00:44,800 Aina akitoa inaruhusu sisi kuchukua hatua floating idadi kama 15 00:00:44,800 --> 00:00:49,170 3.14 na kupata sehemu kabla decimal, 3 katika kesi hii, 16 00:00:49,170 --> 00:00:51,590 na akitoa kwa int. 17 00:00:51,590 --> 00:00:53,900 Hebu chukua mfano kutoka lugha ya Kiingereza kwa kifupi 18 00:00:53,900 --> 00:00:56,910 mapitio ya aina, na kuona jinsi akitoa aina inaweza kubadilika 19 00:00:56,910 --> 00:00:59,380 njia ya sisi kutafsiri kipande cha data. 20 00:00:59,380 --> 00:01:05,269 Kwa data, hebu kuchukua alama hapa. 21 00:01:05,269 --> 00:01:07,570 Mimi tu rejea mistari haya kwa makini configured kama 22 00:01:07,570 --> 00:01:10,100 ishara, lakini kama mtu ambaye anajua lugha ya Kiingereza, 23 00:01:10,100 --> 00:01:12,750 wewe mara kutambua kwamba wao ni, kwa kweli, barua. 24 00:01:12,750 --> 00:01:15,580 Wewe implicitly kueleweka aina data. 25 00:01:15,580 --> 00:01:17,620 Kuangalia hii kamba ya barua tunaweza kuona wawili 26 00:01:17,620 --> 00:01:20,140 tofauti ya maneno, kila na maana yake mwenyewe. 27 00:01:20,140 --> 00:01:25,530 Kuna nomino, upepo, kama katika upepo unavuma nje. 28 00:01:25,530 --> 00:01:28,280 Na kuna kitenzi, upepo, kama katika nahitaji 29 00:01:28,280 --> 00:01:31,410 upepo zamu yangu ya analogi. 30 00:01:31,410 --> 00:01:33,420 Huu ni mfano kuvutia, kwa sababu tunaweza kuona 31 00:01:33,420 --> 00:01:36,270 jinsi ya aina ya kwamba sisi hawawajui data zetu, kama nomino au 32 00:01:36,270 --> 00:01:39,080 verb, mabadiliko jinsi tunavyotumia data kwamba - 33 00:01:39,080 --> 00:01:41,730 kama upepo neno au upepo. 34 00:01:41,730 --> 00:01:44,100 Ingawa kompyuta hajali kuhusu sarufi na sehemu 35 00:01:44,100 --> 00:01:47,750 ya hotuba ya Kiingereza, sawa kanuni ya msingi inatumika. 36 00:01:47,750 --> 00:01:50,290 Hiyo ni, tunaweza kubadilisha tafsiri ya halisi 37 00:01:50,290 --> 00:01:53,140 sawa data kuhifadhiwa katika kumbukumbu kwa kifupi akitoa kwa 38 00:01:53,140 --> 00:01:54,576 aina tofauti. 39 00:01:54,576 --> 00:01:57,250 Hapa ni ukubwa wa aina ya kawaida juu ya 32-bit 40 00:01:57,250 --> 00:01:58,340 mfumo wa uendeshaji. 41 00:01:58,340 --> 00:02:02,070 Tuna Char saa 1 int Byte, na kuelea katika ka 4, kwa muda mrefu 42 00:02:02,070 --> 00:02:04,390 muda mrefu na mara mbili katika ka 8. 43 00:02:04,390 --> 00:02:07,670 Kwa sababu int inachukua hadi ka 4, itachukua up bits 32 44 00:02:07,670 --> 00:02:10,060 wakati ni kuhifadhiwa katika kumbukumbu kama mfululizo binary 45 00:02:10,060 --> 00:02:11,500 ya zeros na ndio. 46 00:02:11,500 --> 00:02:14,020 Muda mrefu kama variable yetu bado kama int aina, 47 00:02:14,020 --> 00:02:16,740 kompyuta daima kubadilisha wale wale na zeros kutoka 48 00:02:16,740 --> 00:02:19,120 binary katika idadi ya awali. 49 00:02:19,120 --> 00:02:21,270 Hata hivyo, tunaweza kinadharia kutupwa wale 32 50 00:02:21,270 --> 00:02:23,510 bits katika mfululizo wa aina Boolean. 51 00:02:23,510 --> 00:02:26,090 Na kisha kompyuta itakuwa hakuna tena kuona idadi, lakini 52 00:02:26,090 --> 00:02:28,810 badala ya ukusanyaji wa zeros na ndio. 53 00:02:28,810 --> 00:02:31,570 Tunaweza pia kujaribu kusoma data kwamba kama numeric tofauti 54 00:02:31,570 --> 00:02:34,660 aina, au hata kama kamba ya herufi nne. 55 00:02:34,660 --> 00:02:37,820 Wakati wa kushughulika na idadi katika akitoa, ni lazima kuzingatia jinsi 56 00:02:37,820 --> 00:02:40,470 usahihi wa thamani yako itakuwa walioathirika. 57 00:02:40,470 --> 00:02:43,240 Kumbuka kwamba usahihi inaweza kukaa sawa, 58 00:02:43,240 --> 00:02:47,150 au unaweza kupoteza usahihi, lakini unaweza kamwe kupata usahihi. 59 00:02:47,150 --> 00:02:49,060 Hebu kupitia kwa njia tatu ya kawaida kwamba unaweza 60 00:02:49,060 --> 00:02:50,400 kupoteza usahihi. 61 00:02:50,400 --> 00:02:53,060 Akitoa kuelea kwa int kusababisha truncation wa kila kitu 62 00:02:53,060 --> 00:02:54,900 baada ya uhakika decimal, hivyo wewe ni kushoto 63 00:02:54,900 --> 00:02:55,950 na namba nzima. 64 00:02:55,950 --> 00:03:02,000 Kama sisi kuchukua x kuelea ambayo itakuwa sawa 3.7, tunaweza kutupwa 65 00:03:02,000 --> 00:03:05,580 this x variable kwa int kwa kifupi kuandika int katika 66 00:03:05,580 --> 00:03:07,050 mabano. 67 00:03:07,050 --> 00:03:10,010 Kila mara sisi kutumia muda huu haki hapa, tutaweza kwa ufanisi 68 00:03:10,010 --> 00:03:12,810 kutumia thamani tatu kwa sababu tumekuwa truncated 69 00:03:12,810 --> 00:03:14,880 kila kitu baada ya uhakika decimal. 70 00:03:14,880 --> 00:03:17,210 Tunaweza pia kubadilisha muda mrefu int, ambayo itakuwa 71 00:03:17,210 --> 00:03:20,760 vile vile kusababisha hasara ya bits high-utaratibu. 72 00:03:20,760 --> 00:03:23,910 muda mrefu inachukua hadi ka 8, au bits 64 katika kumbukumbu. 73 00:03:23,910 --> 00:03:27,050 Hivyo wakati sisi kuwatupia int ambayo tu ana ka 4, au 32 74 00:03:27,050 --> 00:03:29,820 bits, sisi ni kimsingi chopping off bits wote kwamba 75 00:03:29,820 --> 00:03:32,420 kuwakilisha maadili binary juu. 76 00:03:32,420 --> 00:03:34,690 Unaweza pia kutupa mara mbili kwa kuelea, ambayo nitakupa 77 00:03:34,690 --> 00:03:37,340 wewe kuelea karibu inawezekana mara mbili bila 78 00:03:37,340 --> 00:03:39,100 lazima rounding yake. 79 00:03:39,100 --> 00:03:41,840 Sawa na muda wetu kwa muda mrefu kwa uongofu int, hasara katika 80 00:03:41,840 --> 00:03:44,890 usahihi ni kwa sababu mbili ina data zaidi. 81 00:03:44,890 --> 00:03:47,910 mbili itawawezesha kuhifadhi 53 bits muhimu, 82 00:03:47,910 --> 00:03:50,650 takribani 16 muhimu tarakimu. 83 00:03:50,650 --> 00:03:53,050 Wakati kuelea tu kuruhusu kuhifadhi 24 84 00:03:53,050 --> 00:03:56,235 muhimu bits, takribani saba muhimu tarakimu. 85 00:03:56,235 --> 00:03:58,700 Katika kesi hizi mbili za mwisho, inaweza kuwa na manufaa kwa kufikiria 86 00:03:58,700 --> 00:04:01,200 aina akitoa kama resizing picha. 87 00:04:01,200 --> 00:04:03,860 Wakati wewe kwenda kutoka kawaida kubwa kwa kawaida ndogo, huwezi kuona 88 00:04:03,860 --> 00:04:05,600 mambo kama wazi kwa sababu wewe kupoteza data 89 00:04:05,600 --> 00:04:07,530 katika fomu ya saizi. 90 00:04:07,530 --> 00:04:09,270 Aina akitoa pia inaweza kusababisha matatizo wakati sisi 91 00:04:09,270 --> 00:04:11,050 kutupwa ints kwa inaelea. 92 00:04:11,050 --> 00:04:13,920 Tangu ikifungwa kwenye mashine ya 32-bit tu kuwa 24 93 00:04:13,920 --> 00:04:16,959 bits muhimu, hawawezi usahihi kuwakilisha maadili 94 00:04:16,959 --> 00:04:22,750 zaidi ya 2 kwa nguvu ya 24, au 16,777,217. 95 00:04:22,750 --> 00:04:25,540 Sasa hebu majadiliano juu akitoa wazi na thabiti. 96 00:04:25,540 --> 00:04:28,000 Akitoa wazi ni wakati sisi kuandika aina katika mabano 97 00:04:28,000 --> 00:04:29,430 kabla ya jina kutofautiana. 98 00:04:29,430 --> 00:04:33,100 Kama mfano, kabla ya sisi aliandika int katika mabano kabla yetu 99 00:04:33,100 --> 00:04:35,640 kuelea x kutofautiana. 100 00:04:35,640 --> 00:04:37,200 Kwa njia hii, sisi kupata thamani int, 101 00:04:37,200 --> 00:04:38,593 truncated thamani ya 3.7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Kinachojitokeza ni wakati akitoa compiler moja kwa moja changes 104 00:04:42,970 --> 00:04:46,340 sawa aina kwa aina super, au hufanya baadhi ya aina nyingine ya 105 00:04:46,340 --> 00:04:48,310 akitoa bila kuhitaji mtumiaji kuandika 106 00:04:48,310 --> 00:04:49,720 yoyote code ya ziada. 107 00:04:49,720 --> 00:04:53,550 Kwa mfano, wakati sisi kuongeza 5 na 1.1, maadili yetu tayari kuwa na 108 00:04:53,550 --> 00:04:55,680 aina kuhusishwa na wao. 109 00:04:55,680 --> 00:04:59,480 5 ni int, ambapo 1.1 ni kuelea. 110 00:04:59,480 --> 00:05:02,390 Ili kuongeza yao, kompyuta Anamfukuza 5 ndani ya kuelea, 111 00:05:02,390 --> 00:05:04,530 ambayo ingekuwa kitu sawa kama kuandika 5.0 katika 112 00:05:04,530 --> 00:05:06,476 nafasi ya kwanza. 113 00:05:06,476 --> 00:05:13,210 Lakini kwa njia hii sisi kusema kuelea 5, au 5.0, pamoja na kile ilikuwa tayari 114 00:05:13,210 --> 00:05:16,960 kuelea, 1.1, na kutoka hapo tunaweza kweli kuongeza hizi 115 00:05:16,960 --> 00:05:18,640 maadili na kupata thamani 6.1. 116 00:05:21,170 --> 00:05:23,500 Akitoa Kinachojitokeza pia inaruhusu sisi hawawajui vigezo ya 117 00:05:23,500 --> 00:05:25,590 aina tofauti kwa kila mmoja. 118 00:05:25,590 --> 00:05:28,110 Tunaweza daima hawawajui aina chini sahihi katika zaidi 119 00:05:28,110 --> 00:05:29,250 sahihi moja. 120 00:05:29,250 --> 00:05:37,060 Kwa mfano, kama tuna x mara mbili, na y int - 121 00:05:37,060 --> 00:05:40,120 na haya inaweza kuwa na maadili yoyote kwamba sisi akawaweka - 122 00:05:40,120 --> 00:05:43,560 tunaweza kusema x sawa y. 123 00:05:43,560 --> 00:05:46,340 Kwa sababu mara mbili ana zaidi kuliko usahihi int, hivyo sisi 124 00:05:46,340 --> 00:05:48,380 si kupoteza taarifa yoyote. 125 00:05:48,380 --> 00:05:50,420 Kwa upande mwingine, ingekuwa siyo lazima kuwa sahihi kusema 126 00:05:50,420 --> 00:05:54,060 y sawa x, kwa sababu mbili anaweza kuwa na thamani kubwa kuliko 127 00:05:54,060 --> 00:05:55,220 integer. 128 00:05:55,220 --> 00:05:57,420 Na hivyo integer wanaweza kuwa na uwezo wa kushikilia wote 129 00:05:57,420 --> 00:05:59,560 taarifa iliyohifadhiwa katika mbili. 130 00:05:59,560 --> 00:06:02,610 Akitoa Kinachojitokeza ni pia kutumika katika waendeshaji kulinganisha kama 131 00:06:02,610 --> 00:06:06,410 kubwa zaidi kuliko, chini ya, au operator usawa. 132 00:06:06,410 --> 00:06:13,050 Njia hii tunaweza kusema kama 5.1 ni kubwa kuliko 5, na sisi kupata 133 00:06:13,050 --> 00:06:14,750 kusababisha kweli. 134 00:06:14,750 --> 00:06:18,470 Kwa sababu ni int 5, lakini itabidi kutupwa kwa kuelea ili 135 00:06:18,470 --> 00:06:22,090 kuwa ikilinganishwa na kuelea 5.1, tunatarajia kusema 5.1 ni 136 00:06:22,090 --> 00:06:24,550 kubwa kuliko 5.0. 137 00:06:24,550 --> 00:06:31,320 Huyo ni kweli na kusema iwapo 2.0 sawa sawa na 2. 138 00:06:31,320 --> 00:06:34,190 Tunatarajia pia kupata kweli, kwa sababu kompyuta atamtupia 139 00:06:34,190 --> 00:06:39,750 integer 2 kwa kuelea na kisha kusema 2.0 sawa sawa na 2.0, 140 00:06:39,750 --> 00:06:41,660 hii ni kweli. 141 00:06:41,660 --> 00:06:44,180 Usisahau kwamba tunaweza pia kutupwa kati ya ints na chars, 142 00:06:44,180 --> 00:06:46,350 au ASCII maadili. 143 00:06:46,350 --> 00:06:49,690 Chars pia haja ya kupunguzwa kwa binary, ambayo ni kwa nini 144 00:06:49,690 --> 00:06:51,920 urahisi kubadili kati ya chars na husika yao 145 00:06:51,920 --> 00:06:53,260 ASCII maadili. 146 00:06:53,260 --> 00:06:56,180 Ili kujifunza zaidi kuhusu hili, angalia video wetu juu ya ASCII. 147 00:06:56,180 --> 00:06:58,080 Wakati wewe kuchukua muda kufikiria jinsi data imehifadhiwa, 148 00:06:58,080 --> 00:06:59,990 inaanza kufanya mengi ya akili. 149 00:06:59,990 --> 00:07:02,790 Ni kama tu tofauti kati ya upepo na upepo. 150 00:07:02,790 --> 00:07:05,490 data ni sawa, lakini aina inaweza kubadili jinsi sisi 151 00:07:05,490 --> 00:07:06,720 kuifasiri. 152 00:07:06,720 --> 00:07:10,430 Jina langu ni Jordan Jozwiak, hii cs50.