1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] اردن JOZWIAK: نوع ریخته گری، در ساده ترین معنا، 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 همه متغیر ها در زبان های کامپیوتری مانند C، برخی از مرتب کردن بر اساس 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 ریخته گری آن را به نوع int است. 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 بایت، int و شناور در 4 کلمه در ادامه متن طولانی 42 00:02:02,070 --> 00:02:04,390 طولانی و دو در 8 کلمه در ادامه متن. 43 00:02:04,390 --> 00:02:07,670 از آنجا که نوع int طول می کشد تا 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 تا زمانی به عنوان متغیر ما باقی مانده است، به عنوان یک نوع int، 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 ریخته گری float به integer برشی از همه چیز می شود 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 اگر X شناور خواهد شد که 3.7 برابر ما را، ما می توانیم بازیگران 65 00:03:02,000 --> 00:03:05,580 این متغیر x به بین المللی به سادگی به نوشتن int در 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 مشابه به طولانی مدت ما را به تبدیل نوع int، از دست دادن در 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 ریخته گری به نوع داده int به شناور. 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، یا 16،777،217 است. 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 به عنوان مثال، قبل از ما نوشت: int در پرانتز قبل از ما 99 00:04:33,100 --> 00:04:35,640 شناور متغیر x است. 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 نوع int است، در حالی که 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 1 دقیق است. 120 00:05:29,250 --> 00:05:37,060 به عنوان مثال، اگر ما X دو، و Y اعضای هیات - 121 00:05:37,060 --> 00:05:40,120 و این می تواند به هر مقدار که ما آنها را به - 122 00:05:40,120 --> 00:05:43,560 ما می توانیم بگوییم که X برابر Y است. 123 00:05:43,560 --> 00:05:46,340 از آنجا که دو برابر دقت بیشتر از نوع int دارد، بنابراین ما 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 Y برابر است با x، چرا که دو ممکن است یک مقدار بزرگتر از 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 فراموش نکنید که ما نیز می تواند در میان نوع داده int و کاراکتر بازیگران، 142 00:06:44,180 --> 00:06:46,350 یا ارزش های ASCII. 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 ارزش های ASCII. 146 00:06:53,260 --> 00:06:56,180 برای کسب اطلاعات بیشتر در مورد این ویدیو، لطفا ما را در ASCII. 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 نام من Jozwiak اردن، این cs50.