1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN JOZWIAK: Jenis pemutus, dalam erti kata yang mudah, adalah 2 00:00:10,270 --> 00:00:13,300 cara untuk mengubah tafsiran beberapa data komputer oleh 3 00:00:13,300 --> 00:00:16,560 tersirat atau jelas menukar jenis data. 4 00:00:16,560 --> 00:00:19,940 Seperti berubah int kepada apungan, atau sebaliknya. 5 00:00:19,940 --> 00:00:21,550 Untuk memahami pemutus jenis, kita perlu 6 00:00:21,550 --> 00:00:22,680 mulakan dengan asas-asas - 7 00:00:22,680 --> 00:00:24,140 jenis data diri. 8 00:00:24,140 --> 00:00:26,960 Dalam bahasa komputer seperti C, semua pembolehubah mempunyai sejenis 9 00:00:26,960 --> 00:00:29,690 jenis data yang menentukan bagaimana komputer, dan begitu juga 10 00:00:29,690 --> 00:00:32,140 pengguna, menafsirkan pembolehubah yang. 11 00:00:32,140 --> 00:00:35,160 Jenis data berangka seperti int, float lama panjang, dan 12 00:00:35,160 --> 00:00:38,110 double, semua mempunyai ciri-ciri unik masing-masing dan 13 00:00:38,110 --> 00:00:41,370 digunakan untuk menentukan nilai-nilai yang berbeza-beza antara dan ketepatan. 14 00:00:41,370 --> 00:00:44,800 Jenis pemutus membolehkan kita untuk mengambil nombor titik apung seperti 15 00:00:44,800 --> 00:00:49,170 3.14 dan mendapat bahagian sebelum perpuluhan, 3 dalam kes ini, 16 00:00:49,170 --> 00:00:51,590 dengan pemutus ia int an. 17 00:00:51,590 --> 00:00:53,900 Mari kita mengambil contoh daripada bahasa Inggeris untuk ringkas 18 00:00:53,900 --> 00:00:56,910 mengkaji jenis, dan untuk melihat bagaimana pemutus jenis boleh menukar 19 00:00:56,910 --> 00:00:59,380 cara kita mentafsir sekeping data. 20 00:00:59,380 --> 00:01:05,269 Untuk data, mari kita mengambil simbol di sini. 21 00:01:05,269 --> 00:01:07,570 Saya hanya merujuk kepada ayat-ayat ini dengan berhati-hati dikonfigurasikan sebagai 22 00:01:07,570 --> 00:01:10,100 simbol, tetapi sebagai seseorang yang tahu bahasa Inggeris, 23 00:01:10,100 --> 00:01:12,750 anda segera mengiktiraf bahawa mereka adalah, pada hakikatnya, surat. 24 00:01:12,750 --> 00:01:15,580 Anda tersirat memahami jenis data. 25 00:01:15,580 --> 00:01:17,620 Melihat rentetan ini surat kita boleh melihat dua 26 00:01:17,620 --> 00:01:20,140 perkataan yang berbeza, masing-masing dengan makna yang tersendiri. 27 00:01:20,140 --> 00:01:25,530 Ada kata nama, angin, seperti dalam angin bertiup di luar. 28 00:01:25,530 --> 00:01:28,280 Dan ada kata kerja, angin, seperti dalam saya perlu 29 00:01:28,280 --> 00:01:31,410 menggulung menonton analog saya. 30 00:01:31,410 --> 00:01:33,420 Ini adalah satu contoh yang menarik, kerana kita boleh lihat 31 00:01:33,420 --> 00:01:36,270 bagaimana jenis yang kami sediakan data kami, sama ada kata nama atau 32 00:01:36,270 --> 00:01:39,080 kata kerja, perubahan bagaimana kita menggunakan data - 33 00:01:39,080 --> 00:01:41,730 perkataan sebagai angin atau angin. 34 00:01:41,730 --> 00:01:44,100 Walaupun komputer tidak mengambil berat tentang tatabahasa dan bahagian 35 00:01:44,100 --> 00:01:47,750 ucapan Inggeris, prinsip asas yang sama terpakai. 36 00:01:47,750 --> 00:01:50,290 Iaitu, kita boleh mengubah tafsiran tepat 37 00:01:50,290 --> 00:01:53,140 data yang sama disimpan dalam ingatan oleh hanya pemutus kepada 38 00:01:53,140 --> 00:01:54,576 berlainan jenis. 39 00:01:54,576 --> 00:01:57,250 Berikut adalah saiz jenis yang paling biasa pada 32-bit 40 00:01:57,250 --> 00:01:58,340 sistem operasi. 41 00:01:58,340 --> 00:02:02,070 Kami mempunyai char pada 1 bait int, dan terapung pada 4 bait, yang panjang 42 00:02:02,070 --> 00:02:04,390 panjang dan kembar pada 8 bait. 43 00:02:04,390 --> 00:02:07,670 Kerana int mengambil sehingga 4 bait, ia akan mengambil masa sehingga 32 bit 44 00:02:07,670 --> 00:02:10,060 apabila ia disimpan dalam ingatan sebagai satu siri binari 45 00:02:10,060 --> 00:02:11,500 sifar dan orang-orang. 46 00:02:11,500 --> 00:02:14,020 Selagi sebagai pembolehubah kami kekal sebagai int jenis, 47 00:02:14,020 --> 00:02:16,740 komputer akan sentiasa menukar orang-orang yang dan sifar daripada 48 00:02:16,740 --> 00:02:19,120 perduaan ke nombor asal. 49 00:02:19,120 --> 00:02:21,270 Walau bagaimanapun, kita secara teori boleh membuang mereka 32 50 00:02:21,270 --> 00:02:23,510 bit ke dalam siri jenis Boolean. 51 00:02:23,510 --> 00:02:26,090 Dan maka komputer tidak lagi akan melihat nombor, tetapi 52 00:02:26,090 --> 00:02:28,810 bukannya koleksi sifar dan orang-orang. 53 00:02:28,810 --> 00:02:31,570 Kita juga boleh cuba untuk membaca bahawa data bernombor berbeza 54 00:02:31,570 --> 00:02:34,660 menaip, atau bahkan sebagai rentetan empat aksara. 55 00:02:34,660 --> 00:02:37,820 Apabila berurusan dengan nombor dalam tuangan, anda mesti mempertimbangkan bagaimana 56 00:02:37,820 --> 00:02:40,470 ketepatan nilai anda akan terjejas. 57 00:02:40,470 --> 00:02:43,240 Perlu diingat bahawa ketepatan boleh tinggal sama, 58 00:02:43,240 --> 00:02:47,150 atau anda boleh kehilangan ketepatan, tetapi anda tidak boleh mendapat ketepatan. 59 00:02:47,150 --> 00:02:49,060 Mari kita pergi melalui tiga cara yang paling biasa yang anda boleh 60 00:02:49,060 --> 00:02:50,400 kehilangan ketepatan. 61 00:02:50,400 --> 00:02:53,060 Casting apungan untuk int an akan menyebabkan pemangkasan segala-galanya 62 00:02:53,060 --> 00:02:54,900 selepas titik perpuluhan, jadi anda meninggalkan 63 00:02:54,900 --> 00:02:55,950 dengan bilangan keseluruhan. 64 00:02:55,950 --> 00:03:02,000 Jika kita mengambil x apungan yang akan sama 3,7, kita boleh membuang 65 00:03:02,000 --> 00:03:05,580 ini x ubah int dengan hanya menulis int dalam 66 00:03:05,580 --> 00:03:07,050 kurungan. 67 00:03:07,050 --> 00:03:10,010 Apabila kita menggunakan istilah ini di sini, kami akan berkesan 68 00:03:10,010 --> 00:03:12,810 menggunakan nilai tiga kerana kita telah dipenggal 69 00:03:12,810 --> 00:03:14,880 segala-galanya selepas titik perpuluhan. 70 00:03:14,880 --> 00:03:17,210 Kita juga boleh menukar lama int, yang akan 71 00:03:17,210 --> 00:03:20,760 sama membawa kepada kerugian bit tertib tinggi. 72 00:03:20,760 --> 00:03:23,910 A lama mengambil masa sehingga 8 bait, atau 64 bit dalam ingatan. 73 00:03:23,910 --> 00:03:27,050 Jadi, apabila kita membuangnya ke int yang hanya mempunyai 4 bait, atau 32 74 00:03:27,050 --> 00:03:29,820 bit, kita dasarnya mencincang semua bit yang 75 00:03:29,820 --> 00:03:32,420 mewakili nilai perduaan yang lebih tinggi. 76 00:03:32,420 --> 00:03:34,690 Anda juga boleh membuang berganda kepada apungan, yang akan memberi 77 00:03:34,690 --> 00:03:37,340 anda apungan terdekat mungkin untuk dua kali ganda tanpa 78 00:03:37,340 --> 00:03:39,100 semestinya pembundaran. 79 00:03:39,100 --> 00:03:41,840 Serupa dengan panjang kami untuk penukaran int, kerugian dalam 80 00:03:41,840 --> 00:03:44,890 ketepatan adalah kerana double mengandungi lebih banyak data. 81 00:03:44,890 --> 00:03:47,910 Double A akan membolehkan anda untuk menyimpan 53 bit bererti, 82 00:03:47,910 --> 00:03:50,650 kira-kira 16 digit yang ketara. 83 00:03:50,650 --> 00:03:53,050 Manakala apungan hanya akan membenarkan anda untuk menyimpan 24 84 00:03:53,050 --> 00:03:56,235 bit ketara, kira-kira tujuh digit bererti. 85 00:03:56,235 --> 00:03:58,700 Dalam kedua-dua kes lepas, ia mungkin membantu untuk berfikir 86 00:03:58,700 --> 00:04:01,200 menaip pemutus sebagai mengubah saiz gambar. 87 00:04:01,200 --> 00:04:03,860 Apabila anda pergi dari saiz besar kepada saiz yang kecil, anda tidak boleh melihat 88 00:04:03,860 --> 00:04:05,600 perkara dengan jelas kerana anda kehilangan data 89 00:04:05,600 --> 00:04:07,530 dalam bentuk piksel. 90 00:04:07,530 --> 00:04:09,270 Pemutus Jenis juga boleh menyebabkan masalah apabila kita 91 00:04:09,270 --> 00:04:11,050 membuang ints untuk terapung. 92 00:04:11,050 --> 00:04:13,920 Sejak terapung pada mesin 32-bit hanya mempunyai 24 93 00:04:13,920 --> 00:04:16,959 bit bererti, mereka boleh tidak tepat mewakili nilai-nilai 94 00:04:16,959 --> 00:04:22,750 lebih dari 2 kuasa 24, atau 16777217. 95 00:04:22,750 --> 00:04:25,540 Sekarang mari kita bercakap tentang pemutus tersurat dan tersirat. 96 00:04:25,540 --> 00:04:28,000 Pemutus jelas adalah apabila kita menulis jenis dalam kurungan 97 00:04:28,000 --> 00:04:29,430 sebelum nama pembolehubah. 98 00:04:29,430 --> 00:04:33,100 Sebagai contoh, sebelum kita menulis int dalam kurungan sebelum kami 99 00:04:33,100 --> 00:04:35,640 terapung pembolehubah x. 100 00:04:35,640 --> 00:04:37,200 Dengan cara ini, kita akan mendapat nilai int, 101 00:04:37,200 --> 00:04:38,593 nilai dipenggal sebanyak 3.7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Pemutus tersirat adalah apabila pengkompil secara automatik perubahan 104 00:04:42,970 --> 00:04:46,340 jenis yang sama jenis super, atau melakukan beberapa jenis lain 105 00:04:46,340 --> 00:04:48,310 pemutus tanpa memerlukan pengguna untuk menulis 106 00:04:48,310 --> 00:04:49,720 mana-mana kod tambahan. 107 00:04:49,720 --> 00:04:53,550 Sebagai contoh, apabila kita menambah 5 dan 1.1, nilai-nilai kita sudah mempunyai 108 00:04:53,550 --> 00:04:55,680 jenis yang dikaitkan dengan mereka. 109 00:04:55,680 --> 00:04:59,480 5 adalah int, manakala 1.1 apungan. 110 00:04:59,480 --> 00:05:02,390 Dalam usaha untuk menambah mereka, komputer membuang 5 ke apungan, 111 00:05:02,390 --> 00:05:04,530 yang akan menjadi perkara yang sama seperti menulis 5.0 dalam 112 00:05:04,530 --> 00:05:06,476 tempat pertama. 113 00:05:06,476 --> 00:05:13,210 Tetapi cara ini kita katakan apungan 5, atau 5.0, ditambah apa sudah 114 00:05:13,210 --> 00:05:16,960 apungan, 1.1, dan dari sana kita sebenarnya boleh menambah- 115 00:05:16,960 --> 00:05:18,640 nilai dan mendapatkan nilai 6.1. 116 00:05:21,170 --> 00:05:23,500 Pemutus Tersirat juga membolehkan kita untuk menetapkan pembolehubah 117 00:05:23,500 --> 00:05:25,590 jenis antara satu sama lain. 118 00:05:25,590 --> 00:05:28,110 Kami sentiasa boleh menetapkan jenis yang kurang tepat menjadi lebih 119 00:05:28,110 --> 00:05:29,250 yang tepat. 120 00:05:29,250 --> 00:05:37,060 Sebagai contoh, jika kita mempunyai x double, dan y int - 121 00:05:37,060 --> 00:05:40,120 dan ini boleh mempunyai apa-apa nilai yang kita menetapkan mereka - 122 00:05:40,120 --> 00:05:43,560 kita boleh mengatakan x sama dengan y. 123 00:05:43,560 --> 00:05:46,340 Kerana double mempunyai ketepatan lebih daripada int an, jadi kita 124 00:05:46,340 --> 00:05:48,380 tidak akan kehilangan apa-apa maklumat. 125 00:05:48,380 --> 00:05:50,420 Sebaliknya, ia akan tidak semestinya betul untuk mengatakan 126 00:05:50,420 --> 00:05:54,060 y sama x, kerana dua kali ganda mungkin mempunyai nilai yang lebih besar daripada 127 00:05:54,060 --> 00:05:55,220 integer. 128 00:05:55,220 --> 00:05:57,420 Dan jadi integer mungkin tidak dapat untuk memegang semua 129 00:05:57,420 --> 00:05:59,560 maklumat yang disimpan di dalam dua kali ganda. 130 00:05:59,560 --> 00:06:02,610 Pemutus Tersirat juga digunakan dalam pengendali perbandingan seperti 131 00:06:02,610 --> 00:06:06,410 lebih daripada, kurang daripada, atau pengendali kesaksamaan. 132 00:06:06,410 --> 00:06:13,050 Dengan cara ini kita boleh mengatakan jika 5,1 adalah lebih daripada 5, dan kita mendapat 133 00:06:13,050 --> 00:06:14,750 mengakibatkan benar. 134 00:06:14,750 --> 00:06:18,470 Kerana 5 adalah int, tetapi ia akan dibuang kepada apungan untuk 135 00:06:18,470 --> 00:06:22,090 berbanding kepada apungan 5.1, kita akan mengatakan 5.1 adalah 136 00:06:22,090 --> 00:06:24,550 lebih daripada 5.0. 137 00:06:24,550 --> 00:06:31,320 Perkara yang sama adalah benar dengan mengatakan jika 2.0 sama bersamaan 2. 138 00:06:31,320 --> 00:06:34,190 Kami juga akan mendapatkan benar, kerana komputer akan membuang 139 00:06:34,190 --> 00:06:39,750 integer 2 terapung dan kemudian mengatakan 2,0 sama sama 2,0, 140 00:06:39,750 --> 00:06:41,660 ini adalah benar. 141 00:06:41,660 --> 00:06:44,180 Jangan lupa bahawa kita juga boleh membuang antara ints dan aksara, 142 00:06:44,180 --> 00:06:46,350 atau nilai ASCII. 143 00:06:46,350 --> 00:06:49,690 Aksara juga perlu dikurangkan kepada perduaan, itulah sebabnya anda 144 00:06:49,690 --> 00:06:51,920 boleh menukar antara aksara dan masing-masing 145 00:06:51,920 --> 00:06:53,260 Nilai ASCII. 146 00:06:53,260 --> 00:06:56,180 Untuk mengetahui lebih lanjut tentang perkara ini, check out video kami pada ASCII. 147 00:06:56,180 --> 00:06:58,080 Apabila anda mengambil masa untuk berfikir tentang bagaimana data disimpan, 148 00:06:58,080 --> 00:06:59,990 ia mula membuat banyak akal. 149 00:06:59,990 --> 00:07:02,790 Ia adalah sama seperti perbezaan antara angin dan angin. 150 00:07:02,790 --> 00:07:05,490 Data adalah sama, tetapi jenis boleh menukar cara kita 151 00:07:05,490 --> 00:07:06,720 mentafsirkan ia. 152 00:07:06,720 --> 00:07:10,430 Nama saya adalah Jordan Jozwiak, cs50 ini.