1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN 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 როგორიცაა შეცვლის int to float, ან პირიქით. 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 რიცხვითი მონაცემთა ტიპები, როგორიცაა int, ხანგრძლივი ხანგრძლივი, ათწილადი და 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 wind ჩემი ანალოგი watch. 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 აქ არის ზომის ყველაზე გავრცელებული ტიპის on 32-bit 40 00:01:57,250 --> 00:01:58,340 ოპერაციული სისტემა. 41 00:01:58,340 --> 00:02:02,070 ჩვენ გვყავს char ზე 1 byte, int და ათწილადი at 4 ბაიტი, ხანგრძლივი 42 00:02:02,070 --> 00:02:04,390 ხანგრძლივი და ორმაგი დილის 8 ბაიტი. 43 00:02:04,390 --> 00:02:07,670 რადგან int იკავებს 4 ბაიტს, დასჭირდება up 32 ბიტი 44 00:02:07,670 --> 00:02:10,060 როდესაც იგი ინახება მეხსიერების როგორც ორობითი სერია 45 00:02:10,060 --> 00:02:11,500 საქართველოს zeros და პირობა. 46 00:02:11,500 --> 00:02:14,020 სანამ ჩვენი ცვლადი რჩება ტიპის int, 47 00:02:14,020 --> 00:02:16,740 კომპიუტერი ყოველთვის კონვერტირება იმ პირობა და zeros საწყისი 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 ნაცვლად კოლექცია zeros და პირობა. 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 to int გამოიწვევს truncation ყველაფერი 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 თუ ავიღებთ float x, რომელიც გაუტოლდება 3.7, ჩვენ შეგვიძლია მიცემული 65 00:03:02,000 --> 00:03:05,580 ამ ცვლადი x to int უბრალოდ წერა 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 გამოყენებული ღირებულების სამი რადგან ჩვენ truncated 69 00:03:12,810 --> 00:03:14,880 ყველაფერი მას შემდეგ ათობითი წერტილი. 70 00:03:14,880 --> 00:03:17,210 ჩვენ შეგვიძლია ასევე კონვერტირება ხანგრძლივი ხანგრძლივი to int, რომელიც 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 ასე რომ, როდესაც ჩვენ მიიღო ის, რომ int რომელიც მხოლოდ 4 ბაიტი, ან 32 74 00:03:27,050 --> 00:03:29,820 ბიტი, ჩვენ არსებითად chopping off ყველა ბიტი, რომ 75 00:03:29,820 --> 00:03:32,420 წარმოადგენს უმაღლესი ორობითი ღირებულებებს. 76 00:03:32,420 --> 00:03:34,690 თქვენ შეიძლება ასევე მიცემული ორმაგი to float, რომელიც მისცემს 77 00:03:34,690 --> 00:03:37,340 თქვენ უახლოეს შესაძლო ათწილადი to ორმაგი გარეშე 78 00:03:37,340 --> 00:03:39,100 აუცილებლად დამრგვალება იგი. 79 00:03:39,100 --> 00:03:41,840 მსგავსი ჩვენი ხანგრძლივი ხანგრძლივი to 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 ვინაიდან float იქნება მხოლოდ გაძლევთ საშუალებას შეინახოთ 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 აკრიფოთ ჩამოსხმის როგორც resizing ფოტო. 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 სახით pixels. 90 00:04:07,530 --> 00:04:09,270 გაცნობის ჩამოსხმის ასევე შეუძლია გამოიწვიოს trouble როდესაც ჩვენ 91 00:04:09,270 --> 00:04:11,050 მიცემული ints to მოძრავი. 92 00:04:11,050 --> 00:04:13,920 მას შემდეგ, რაც მოძრავი on 32-bit მანქანა მხოლოდ 24 93 00:04:13,920 --> 00:04:16,959 მნიშვნელოვანი ბიტი, მათ არ შეუძლიათ ზუსტად წარმოადგენენ ღირებულებები 94 00:04:16,959 --> 00:04:22,750 მეტი 2 ძალა 24, ან 16777217. 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 ამ გზით, ჩვენ კიდევ int ღირებულება, 101 00:04:37,200 --> 00:04:38,593 truncated ღირებულება 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 არის float. 110 00:04:59,480 --> 00:05:02,390 იმისათვის, რომ დაამატოთ ისინი, კომპიუტერი ეჭვქვეშ 5 შევიდა float, 111 00:05:02,390 --> 00:05:04,530 რაც იქნებოდა იგივე როგორც წერილობით 5.0 in 112 00:05:04,530 --> 00:05:06,476 პირველი ადგილი. 113 00:05:06,476 --> 00:05:13,210 მაგრამ ამ გზით ჩვენ ვამბობთ, float 5, ან 5.0, პლუს რა იყო უკვე 114 00:05:13,210 --> 00:05:16,960 float, 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 ზუსტი ერთი. 120 00:05:29,250 --> 00:05:37,060 მაგალითად, თუ გვაქვს ორმაგი x, და int 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 არის int, მაგრამ ეს გექნებათ მიცემული to float, რათა 135 00:06:18,470 --> 00:06:22,090 შეიძლება შედარებით float 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 to ათწილადი და შემდეგ ამბობენ 2.0 შეადგენს შეადგენს 2.0, 140 00:06:39,750 --> 00:06:41,660 ეს მართლაც ასეა. 141 00:06:41,660 --> 00:06:44,180 ნუ დაგავიწყდებათ, რომ ჩვენ შეგვიძლია ასევე მიცემული შორის ints და სიმბოლო, 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 შეგიძლიათ მარტივად გადაიყვანოთ შორის chars და მათი შესაბამისი 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.