1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN Jóźwiak: Tyyppi valu, yksinkertaisimmassa mielessä, on 2 00:00:10,270 --> 00:00:13,300 tapa muuttaa tietokoneen tulkinta joidenkin tietojen 3 00:00:13,300 --> 00:00:16,560 implisiittisesti tai eksplisiittisesti muuttamatta sen tietotyyppi. 4 00:00:16,560 --> 00:00:19,940 Kuten muuttamalla int koho, tai päinvastoin. 5 00:00:19,940 --> 00:00:21,550 Ymmärtää tyyppi valu, meidän 6 00:00:21,550 --> 00:00:22,680 aloitettava perusasioista - 7 00:00:22,680 --> 00:00:24,140 tietotyyppejä itse. 8 00:00:24,140 --> 00:00:26,960 Tietokoneen kieliä kuten C, kaikki muuttujat on jonkinlainen 9 00:00:26,960 --> 00:00:29,690 tietotyyppi, joka määrittää, miten tietokone ja samoin 10 00:00:29,690 --> 00:00:32,140 käyttäjä, tulkitsee, että muuttuja. 11 00:00:32,140 --> 00:00:35,160 Numeeriset tietotyypit kuten int, long long, float ja 12 00:00:35,160 --> 00:00:38,110 kaksinkertainen, kaikilla on omat ainutlaatuiset ominaisuudet ja ovat 13 00:00:38,110 --> 00:00:41,370 käytetään määrittää arvot vaihtelevat valikoimia ja tarkkuutta. 14 00:00:41,370 --> 00:00:44,800 Tyyppi valu antaa meille mahdollisuuden ottaa liukuluku kuten 15 00:00:44,800 --> 00:00:49,170 3,14 ja saada osa ennen desimaalipilkun, 3 tässä tapauksessa, 16 00:00:49,170 --> 00:00:51,590 valamalla se int. 17 00:00:51,590 --> 00:00:53,900 Otetaanpa esimerkki Englanti kielen lyhyt 18 00:00:53,900 --> 00:00:56,910 lue tyyppejä, ja nähdä miten tyypin valu voi muuttua 19 00:00:56,910 --> 00:00:59,380 tapamme tulkita osa tiedoista. 20 00:00:59,380 --> 00:01:05,269 Datan, otetaan symbolit täällä. 21 00:01:05,269 --> 00:01:07,570 Minä vain viitata näihin huolellisesti määritetty rivejä 22 00:01:07,570 --> 00:01:10,100 symboleja, mutta joku joka tietää Englanti kieli, 23 00:01:10,100 --> 00:01:12,750 te heti, että ne ovat itse asiassa kirjeitä. 24 00:01:12,750 --> 00:01:15,580 Voit epäsuorasti ymmärtää tietotyyppi. 25 00:01:15,580 --> 00:01:17,620 Tarkasteltaessa tämä merkkijono kirjaimia voimme nähdä kaksi 26 00:01:17,620 --> 00:01:20,140 eri sanoja, joilla kullakin on oma merkityksensä. 27 00:01:20,140 --> 00:01:25,530 On substantiivi, tuuli, kuten tuuli puhaltaa ulkona. 28 00:01:25,530 --> 00:01:28,280 Ja siellä verbi, tuuli, kuten minun täytyy 29 00:01:28,280 --> 00:01:31,410 tuuli minun analoginen kello. 30 00:01:31,410 --> 00:01:33,420 Tämä on mielenkiintoinen esimerkki, koska voimme nähdä 31 00:01:33,420 --> 00:01:36,270 miten tyyppi että antaa meidän tietoja, myös substantiivi tai 32 00:01:36,270 --> 00:01:39,080 verbi, muutokset miten käyttää tietoja - 33 00:01:39,080 --> 00:01:41,730 koska sana tuuli tai tuuli. 34 00:01:41,730 --> 00:01:44,100 Vaikka tietokone ei välitä kielioppi ja osat 35 00:01:44,100 --> 00:01:47,750 ja Englanti puhe, sama perusperiaate pätee. 36 00:01:47,750 --> 00:01:50,290 Eli voimme muuttaa tulkintaa tarkka 37 00:01:50,290 --> 00:01:53,140 Sama muistiin tallennetut tiedot yksinkertaisesti valamalla se 38 00:01:53,140 --> 00:01:54,576 eri tyyppiä. 39 00:01:54,576 --> 00:01:57,250 Tässä ovat kokoa yleisimpiä on 32-bittinen 40 00:01:57,250 --> 00:01:58,340 käyttöjärjestelmän. 41 00:01:58,340 --> 00:02:02,070 Meillä on char on 1 tavu, int ja float 4 tavua, pitkä 42 00:02:02,070 --> 00:02:04,390 pitkä ja kaksinkertainen 8 tavua. 43 00:02:04,390 --> 00:02:07,670 Koska int vie 4 tavua, se kestää jopa 32 bittiä 44 00:02:07,670 --> 00:02:10,060 kun se tallennetaan muistiin binäärisen sarja 45 00:02:10,060 --> 00:02:11,500 nollia ja ykkösiä. 46 00:02:11,500 --> 00:02:14,020 Niin kauan kuin muuttuja pysyy tyyppiä int, 47 00:02:14,020 --> 00:02:16,740 tietokone aina muuntaa nuo ja nollat 48 00:02:16,740 --> 00:02:19,120 binary osaksi alkuperäistä numero. 49 00:02:19,120 --> 00:02:21,270 Voisimme kuitenkin teoriassa heittää nuo 32 50 00:02:21,270 --> 00:02:23,510 bitit useisiin Boolen tyyppejä. 51 00:02:23,510 --> 00:02:26,090 Ja sitten tietokone ei enää nähdä useita, mutta 52 00:02:26,090 --> 00:02:28,810 sijaan joukko nollia ja ykkösiä. 53 00:02:28,810 --> 00:02:31,570 Voisimme myös yrittää lukea, että tiedot eri numeerinen 54 00:02:31,570 --> 00:02:34,660 kirjoittaa, tai jopa merkkijono neljä merkkiä. 55 00:02:34,660 --> 00:02:37,820 Käsitellessään numerot valu, sinun täytyy miettiä, miten 56 00:02:37,820 --> 00:02:40,470 tarkkuus arvosi vaikuttaa. 57 00:02:40,470 --> 00:02:43,240 Muista, että tarkkuus voi pysyä samana, 58 00:02:43,240 --> 00:02:47,150 tai voit menettää tarkkuutta, mutta et voi koskaan saada tarkkuutta. 59 00:02:47,150 --> 00:02:49,060 Mennään läpi varten kolme yleisintä tapaa, että voit 60 00:02:49,060 --> 00:02:50,400 menettää tarkkuutta. 61 00:02:50,400 --> 00:02:53,060 Casting float int aiheuttaa katkaisu kaikesta 62 00:02:53,060 --> 00:02:54,900 desimaalipilkun jälkeen, joten olet jäänyt 63 00:02:54,900 --> 00:02:55,950 kanssa kokonaislukuun. 64 00:02:55,950 --> 00:03:02,000 Jos otamme float x, joka on sama kuin 3.7, voimme heittää 65 00:03:02,000 --> 00:03:05,580 Tämän muuttujan x int yksinkertaisesti kirjoittamalla int vuonna 66 00:03:05,580 --> 00:03:07,050 Suluissa. 67 00:03:07,050 --> 00:03:10,010 Aina käytämme tätä termiä täällä, käymme tehokkaasti 68 00:03:10,010 --> 00:03:12,810 käyttää arvoa kolme, koska olemme katkaistu 69 00:03:12,810 --> 00:03:14,880 kaiken desimaalipilkun jälkeen. 70 00:03:14,880 --> 00:03:17,210 Voimme myös muuntaa pitkä pitkä int, joka 71 00:03:17,210 --> 00:03:20,760 samoin johtaa menetykseen bittiin. 72 00:03:20,760 --> 00:03:23,910 Pitkä pitkä vie 8 tavua tai 64 bittiä muistiin. 73 00:03:23,910 --> 00:03:27,050 Joten, kun me heitimme sen int joka on vain 4 tavua tai 32 74 00:03:27,050 --> 00:03:29,820 bittiä, olemme lähinnä pilkkominen pois kaikki bitit, jotka 75 00:03:29,820 --> 00:03:32,420 edustavat korkeamman binääriarvoja. 76 00:03:32,420 --> 00:03:34,690 Voisit myös heittää double float, joka antaa 77 00:03:34,690 --> 00:03:37,340 olet mahdollisimman lähellä float double ilman 78 00:03:37,340 --> 00:03:39,100 välttämättä pyöristystä sitä. 79 00:03:39,100 --> 00:03:41,840 Samanlaisia ​​pitkän pitkä int muuntaminen, menetys 80 00:03:41,840 --> 00:03:44,890 tarkkuus on sillä kaksinkertainen sisältää enemmän dataa. 81 00:03:44,890 --> 00:03:47,910 Kaksinkertainen avulla voit tallentaa 53 merkitsevää bittiä, 82 00:03:47,910 --> 00:03:50,650 noin 16 merkitsevää numeroa. 83 00:03:50,650 --> 00:03:53,050 Katsoo float vain voit tallentaa 24 84 00:03:53,050 --> 00:03:56,235 merkitsevää bittiä, noin seitsemän merkitsevää numeroa. 85 00:03:56,235 --> 00:03:58,700 Näissä kaksi viimeistä tapauksissa voi olla hyödyllistä ajatella 86 00:03:58,700 --> 00:04:01,200 kirjoita valu kokoa kuva. 87 00:04:01,200 --> 00:04:03,860 Kun menet suuren koon pieni koko, et näe 88 00:04:03,860 --> 00:04:05,600 asiat niin selkeästi, koska olet menettänyt tietoja 89 00:04:05,600 --> 00:04:07,530 muodossa pikseliä. 90 00:04:07,530 --> 00:04:09,270 Tyyppi valu voi myös aiheuttaa ongelmia, kun 91 00:04:09,270 --> 00:04:11,050 heittää ints ja kelluu. 92 00:04:11,050 --> 00:04:13,920 Koska kelluu 32-bittinen kone on vain 24 93 00:04:13,920 --> 00:04:16,959 merkitsevää bittiä, he eivät voi tarkasti edustavat arvoja 94 00:04:16,959 --> 00:04:22,750 yli 2 valtaa 24, tai 16777217. 95 00:04:22,750 --> 00:04:25,540 Nyt puhutaan eksplisiittisiä ja implisiittisiä valu. 96 00:04:25,540 --> 00:04:28,000 Explicit valu on kun kirjoitan suluissa 97 00:04:28,000 --> 00:04:29,430 ennen muuttujan nimeä. 98 00:04:29,430 --> 00:04:33,100 Esimerkiksi ennen kuin kirjoitti int sulkeisiin ennen meidän 99 00:04:33,100 --> 00:04:35,640 float muuttuja x. 100 00:04:35,640 --> 00:04:37,200 Tällä tavalla, saadaan int arvo, 101 00:04:37,200 --> 00:04:38,593 katkaistun arvo 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Implisiittiset valu on kun kääntäjä vaihtaa automaattisesti 104 00:04:42,970 --> 00:04:46,340 samanlainen tyypit super tyyppiä, tai suorittaa muu sellainen 105 00:04:46,340 --> 00:04:48,310 valu ilman käyttäjän kirjoittaa 106 00:04:48,310 --> 00:04:49,720 mitään lisäkoodi. 107 00:04:49,720 --> 00:04:53,550 Esimerkiksi kun lisäämme 5 ja 1,1, arvomme jo 108 00:04:53,550 --> 00:04:55,680 tyypit niihin liittyviä. 109 00:04:55,680 --> 00:04:59,480 5 on int, kun taas 1.1 on float. 110 00:04:59,480 --> 00:05:02,390 Jotta lisätä ne, tietokone heittää 5 tulee float, 111 00:05:02,390 --> 00:05:04,530 mikä olisi ollut sama asia kuin kirjallisesti 5,0 vuonna 112 00:05:04,530 --> 00:05:06,476 ensiksi. 113 00:05:06,476 --> 00:05:13,210 Mutta näin sanomme float 5 tai 5,0, ja mikä oli jo 114 00:05:13,210 --> 00:05:16,960 float, 1,1, ja sieltä voimme itse lisätä näitä 115 00:05:16,960 --> 00:05:18,640 arvot ja saada arvon 6,1. 116 00:05:21,170 --> 00:05:23,500 Implisiittiset valu voimme myös määrittää muuttujia 117 00:05:23,500 --> 00:05:25,590 erilaisia ​​toisiinsa. 118 00:05:25,590 --> 00:05:28,110 Voimme aina antaa epätarkempi kirjoitat enemmän 119 00:05:28,110 --> 00:05:29,250 tarkka yksi. 120 00:05:29,250 --> 00:05:37,060 Esimerkiksi jos meillä on kaksinkertainen x, ja int y - 121 00:05:37,060 --> 00:05:40,120 ja ne voivat olla mitä tahansa arvoja, jotka asetimme heidät - 122 00:05:40,120 --> 00:05:43,560 Voimme sanoa x on y. 123 00:05:43,560 --> 00:05:46,340 Koska kaksinkertaisen on enemmän tarkkuutta kuin int, joten 124 00:05:46,340 --> 00:05:48,380 ei menetä mitään tietoja. 125 00:05:48,380 --> 00:05:50,420 Toisaalta, se ei välttämättä ole oikein sanoa 126 00:05:50,420 --> 00:05:54,060 Y vastaa x, koska kaksinkertainen saattaa olla suurempi arvo kuin 127 00:05:54,060 --> 00:05:55,220 kokonaisluku. 128 00:05:55,220 --> 00:05:57,420 Ja niin kokonaisluku ei ehkä pysty pitämään kaikkia 129 00:05:57,420 --> 00:05:59,560 tallennettujen tietojen kaksinkertainen. 130 00:05:59,560 --> 00:06:02,610 Implisiittinen valu käytetään myös vertailussa toimijoiden kuten 131 00:06:02,610 --> 00:06:06,410 suurempi, pienempi kuin tai tasa-operaattori. 132 00:06:06,410 --> 00:06:13,050 Näin voimme sanoa, jos 5,1 on suurempi kuin 5, ja saamme 133 00:06:13,050 --> 00:06:14,750 seurauksena totta. 134 00:06:14,750 --> 00:06:18,470 Koska 5 on int, mutta se tulee olemaan valetaan float jotta 135 00:06:18,470 --> 00:06:22,090 voidaan verrata float 5,1 me sanoisi 5.1 on 136 00:06:22,090 --> 00:06:24,550 on suurempi kuin 5,0. 137 00:06:24,550 --> 00:06:31,320 Sama pätee sanonta jos 2,0 vastaa yhtä 2. 138 00:06:31,320 --> 00:06:34,190 Olimme myös saada totta, koska tietokone heittää 139 00:06:34,190 --> 00:06:39,750 kokonaisluku 2 kellua ja sanoa sitten 2,0 vastaa yhtä 2,0- 140 00:06:39,750 --> 00:06:41,660 Tämä on totta. 141 00:06:41,660 --> 00:06:44,180 Älä unohda, että voimme myös heittää välillä ints ja merkkiä, 142 00:06:44,180 --> 00:06:46,350 tai ASCII arvoja. 143 00:06:46,350 --> 00:06:49,690 Merkkiä on myös vähennettävä binary, joten voit 144 00:06:49,690 --> 00:06:51,920 voi helposti muuntaa välillä merkkiä ja niiden 145 00:06:51,920 --> 00:06:53,260 ASCII-arvoina. 146 00:06:53,260 --> 00:06:56,180 Saat lisätietoja tästä, tutustu video ASCII. 147 00:06:56,180 --> 00:06:58,080 Kun otat hetkeksi miettimään, miten tietoja on tallennettu, 148 00:06:58,080 --> 00:06:59,990 se alkaa tehdä paljon järkeä. 149 00:06:59,990 --> 00:07:02,790 Se on aivan kuin ero tuuli ja tuulen. 150 00:07:02,790 --> 00:07:05,490 Data on sama, mutta tyypin voi muuttaa miten 151 00:07:05,490 --> 00:07:06,720 tulkita sitä. 152 00:07:06,720 --> 00:07:10,430 Nimeni on Jordan Jóźwiak, tämä cs50.