[Powered by Google Translate] JORDAN JOZWIAK: გაცნობის ჩამოსხმის, წელს მარტივი გაგებით, არის გზა შეცვალოს კომპიუტერის ინტერპრეტაცია ზოგიერთი მონაცემების მინიშნებით ან პირდაპირ იცვლება მისი მონაცემები ტიპის. როგორიცაა შეცვლის int to float, ან პირიქით. ამის გასაგებად ტიპის ჩამოსხმის, ჩვენ უნდა იწყება საფუძვლები - მონაცემთა ტიპები თავს. კომპიუტერულ ენებს, როგორიცაა C, ყველა ცვლადები აქვს გარკვეული მონაცემთა ტიპი, რომელიც განსაზღვრავს რამდენად კომპიუტერი, და ასევე მომხმარებელი, განმარტავს, რომ ცვლადი. რიცხვითი მონაცემთა ტიპები, როგორიცაა int, ხანგრძლივი ხანგრძლივი, ათწილადი და ორმაგი, ყველას გვაქვს საკუთარი უნიკალური მახასიათებლები და არიან გამოიყენება დააკონკრეტა ღირებულებების სხვადასხვა მერყეობს და ზუსტი. გაცნობის ჩამოსხმის საშუალებას გვაძლევს მიიღოს მცურავი პუნქტიანი ხმების მოსწონს 3,14 და მიიღეთ ნაწილი ადრე ათობითი, 3 ამ შემთხვევაში, მიერ კასტინგის მას int. ავიღოთ მაგალითი ინგლისურ ენას მოკლე მიმოხილვა ტიპის, და ვნახოთ როგორ ტიპის ჩამოსხმის შეუძლია შეცვალოს გზა ჩვენ ინტერპრეტაცია ნაჭერი მონაცემები. მონაცემთა, ავიღოთ სიმბოლიკა აქ. მე უბრალოდ ეხება ამ ყურადღებით კონფიგურაცია ხაზები როგორც სიმბოლიკა, არამედ როგორც პიროვნებას, რომელიც იცის ინგლისური ენის, თქვენ მაშინვე ვაღიარებთ, რომ ისინი, ფაქტობრივად, წერილები. თქვენ მინიშნებით მიხვდა, მონაცემები ტიპის. ეძებს ამ სიმებიანი წერილების ვხედავთ ორ სხვადასხვა სიტყვა, თითოეული საკუთარი მნიშვნელობა. არსებობს არსებითი სახელი, ქარი, როგორც ქარი უბერავს გარეთ. და არსებობს ზმნა, ქარი, როგორც მე უნდა wind ჩემი ანალოგი watch. ეს არის საინტერესო მაგალითია, რადგან ჩვენ ვხედავთ როგორ ტიპის რომ უნდა მივუთითოთ ჩვენი მონაცემებით, თუ არა არსებითი სახელი ან ზმნა, ცვლილებები თუ როგორ ვიყენებთ ამ მონაცემები - როგორც სიტყვა ქარი ან ქარი. მიუხედავად იმისა, რომ კომპიუტერი არ აინტერესებს გრამატიკა და ნაწილები ინგლისური სიტყვის, იმავე ძირითად პრინციპს მიმართავს. ანუ, ჩვენ შეგვიძლია შევცვალოთ ინტერპრეტაცია ზუსტი იგივე მონაცემები ინახება მეხსიერებაში უბრალოდ აძლევენ მას სხვადასხვა ტიპის. აქ არის ზომის ყველაზე გავრცელებული ტიპის on 32-bit ოპერაციული სისტემა. ჩვენ გვყავს char ზე 1 byte, int და ათწილადი at 4 ბაიტი, ხანგრძლივი ხანგრძლივი და ორმაგი დილის 8 ბაიტი. რადგან int იკავებს 4 ბაიტს, დასჭირდება up 32 ბიტი როდესაც იგი ინახება მეხსიერების როგორც ორობითი სერია საქართველოს zeros და პირობა. სანამ ჩვენი ცვლადი რჩება ტიპის int, კომპიუტერი ყოველთვის კონვერტირება იმ პირობა და zeros საწყისი ორობითი შევიდა ორიგინალური ნომერი. თუმცა, შეიძლება თეორიულად მიცემული იმ 32 ბიტი შევიდა რიგი ლოგიკური ტიპები. და მაშინ კომპიუტერი აღარ ვხედავ ნომერი, მაგრამ ნაცვლად კოლექცია zeros და პირობა. ჩვენ შეგვიძლია აგრეთვე ცდილობენ წაიკითხონ, რომ მონაცემები, როგორც სხვადასხვა რიცხვითი ტიპის, ან თუნდაც როგორც სიმებიანი ოთხი სიმბოლო. როდესაც საქმე ნომრები ჩამოსხმის, თქვენ უნდა განიხილოს, თუ როგორ სიზუსტის თქვენი ღირებულება იქნება დაზარალებული. გაითვალისწინეთ, რომ სიზუსტით შეიძლება დარჩენა იგივე, ან თქვენ შეგიძლიათ დასაკარგი სიზუსტით, მაგრამ თქვენ ვერ მოიპოვებს სიზუსტით. მოდით გავლა სამი ყველაზე გავრცელებული გზები, რომ თქვენ შეგიძლიათ დაკარგავს სიზუსტით. ჩამოსხმა float to int გამოიწვევს truncation ყველაფერი შემდეგ ათობითი წერტილი, ასე თქვენ დაუტოვებიათ ერთად მთელი რიცხვი. თუ ავიღებთ float x, რომელიც გაუტოლდება 3.7, ჩვენ შეგვიძლია მიცემული ამ ცვლადი x to int უბრალოდ წერა int წელს ფრჩხილებში. როდესაც ჩვენ ვიყენებთ ეს ტერმინი სწორედ აქ, ჩვენ ეფექტურად გამოყენებული ღირებულების სამი რადგან ჩვენ truncated ყველაფერი მას შემდეგ ათობითი წერტილი. ჩვენ შეგვიძლია ასევე კონვერტირება ხანგრძლივი ხანგრძლივი to int, რომელიც ანალოგიურად გამოიწვიოს დაკარგვა მაღალი რათა ბიტი. ხანგრძლივი ხანგრძლივი იკავებს 8 ბაიტს, ან 64 ბიტი მეხსიერებაში. ასე რომ, როდესაც ჩვენ მიიღო ის, რომ int რომელიც მხოლოდ 4 ბაიტი, ან 32 ბიტი, ჩვენ არსებითად chopping off ყველა ბიტი, რომ წარმოადგენს უმაღლესი ორობითი ღირებულებებს. თქვენ შეიძლება ასევე მიცემული ორმაგი to float, რომელიც მისცემს თქვენ უახლოეს შესაძლო ათწილადი to ორმაგი გარეშე აუცილებლად დამრგვალება იგი. მსგავსი ჩვენი ხანგრძლივი ხანგრძლივი to int კონვერტაცია, ზარალი სიზუსტით არის, რადგან ორმაგი შეიცავს მეტი მონაცემები. ორმაგი საშუალებას მოგცემთ ჩაწეროთ 53 მნიშვნელოვანი ბიტი, უხეშად 16 მნიშვნელოვანი ციფრები. ვინაიდან float იქნება მხოლოდ გაძლევთ საშუალებას შეინახოთ 24 მნიშვნელოვანი ბიტი, უხეშად შვიდი მნიშვნელოვანი ციფრები. ამ ბოლო ორ შემთხვევაში, ეს შეიძლება იყოს სასარგებლო ვიფიქროთ, აკრიფოთ ჩამოსხმის როგორც resizing ფოტო. როდესაც თქვენ აქედან დიდი ზომა, რათა მცირე ზომის, თქვენ ვერ ხედავთ რამ ნათლად რადგან თქვენ დაკარგული მონაცემები სახით pixels. გაცნობის ჩამოსხმის ასევე შეუძლია გამოიწვიოს trouble როდესაც ჩვენ მიცემული ints to მოძრავი. მას შემდეგ, რაც მოძრავი on 32-bit მანქანა მხოლოდ 24 მნიშვნელოვანი ბიტი, მათ არ შეუძლიათ ზუსტად წარმოადგენენ ღირებულებები მეტი 2 ძალა 24, ან 16777217. ახლა ვისაუბროთ იმაზე სიცოცხლისუნარიანობა და დაფარული გააპროტესტეს. გამოკვეთილ ჩამოსხმის არის, როდესაც ჩვენ წერენ ტიპის ფრჩხილებში სანამ ცვლადის სახელი. როგორც მაგალითად, სანამ ჩვენ წერდა int ფრჩხილებში წინაშე ათწილადი ცვლადი x. ამ გზით, ჩვენ კიდევ int ღირებულება, truncated ღირებულება 3.7 - 3. იმპლიციტური ჩამოსხმის არის როდესაც შემდგენელი ავტომატურად იცვლება მსგავსი ტიპის, რათა სუპერ ტიპის ან რაიმე სხვა სახის კასტინგის გარეშე საჭიროებს მომხმარებლის დაწერა ნებისმიერი დამატებითი კოდი. მაგალითად, როდესაც ჩვენ დაამატოთ 5 და 1.1, ჩვენი ღირებულებები უკვე აქვს სახის მათთან ასოცირებული. 5 არის int, ხოლო 1.1 არის float. იმისათვის, რომ დაამატოთ ისინი, კომპიუტერი ეჭვქვეშ 5 შევიდა float, რაც იქნებოდა იგივე როგორც წერილობით 5.0 in პირველი ადგილი. მაგრამ ამ გზით ჩვენ ვამბობთ, float 5, ან 5.0, პლუს რა იყო უკვე float, 1.1, და იქიდან შეგვიძლია რეალურად დაამატოთ ეს ღირებულებები და მიიღეთ ღირებულება 6.1. იმპლიციტური ჩამოსხმის ასევე საშუალებას გვაძლევს მივუთითოთ ცვლადი სხვადასხვა ტიპის ერთმანეთს. ჩვენ შეგვიძლია ყოველთვის დაავალოს ნაკლებად ზუსტი ტიპის შევიდა მეტი ზუსტი ერთი. მაგალითად, თუ გვაქვს ორმაგი x, და int y - და ეს შეიძლება რაიმე ღირებულებები, რომ ჩვენ განვსაზღვრეთ მათ - ჩვენ შეგვიძლია ვთქვათ, x უდრის Y. რადგან ორმაგი მეტი სიზუსტით, ვიდრე int, ამიტომ ჩვენ არ კარგავთ ნებისმიერი ინფორმაცია. მეორეს მხრივ, ეს იქნებოდა არა აუცილებლად იქნება სწორი იმის თქმა, Y ტოლია x, რადგან ორმაგი შესაძლოა უფრო დიდი ღირებულება, ვიდრე მთელი რიცხვი. და ასე მთელი რიცხვი, შესაძლოა, ვერ შეძლებს გამართავს ყველა ინფორმაცია ინახება ორმაგი. იმპლიციტური ჩამოსხმის ასევე გამოიყენება შედარებით ოპერატორების მოსწონს მეტი, ნაკლები, ან თანასწორობის ოპერატორს. ეს გზა, ჩვენ შეგვიძლია ვთქვათ, თუ 5.1 მეტია 5, და მივიღებთ გამოიწვევს ჭეშმარიტი. იმის გამო, რომ 5 არის int, მაგრამ ეს გექნებათ მიცემული to float, რათა შეიძლება შედარებით float 5.1, ჩვენ ვიტყოდი 5.1 არის მეტი 5.0. იგივე ეხება ამბობდა, თუ 2.0 უდრის უდრის 2. მე მინდა ასევე ჭეშმარიტი, რადგან კომპიუტერი მიცემული მთელი რიცხვი 2 to ათწილადი და შემდეგ ამბობენ 2.0 შეადგენს შეადგენს 2.0, ეს მართლაც ასეა. ნუ დაგავიწყდებათ, რომ ჩვენ შეგვიძლია ასევე მიცემული შორის ints და სიმბოლო, ან ASCII ღირებულებებს. ჩარები ასევე უნდა შემცირდება ორობითი, რის გამოც თქვენ შეგიძლიათ მარტივად გადაიყვანოთ შორის chars და მათი შესაბამისი ASCII ღირებულებებს. თუ გაინტერესებთ ამ, შეამოწმეთ ჩვენი ვიდეო ASCII. როდესაც თქვენ მიიღოს მომენტში ვიფიქროთ რა მონაცემები ის ინახება, იგი იწყება, რათა ბევრი გაგებით. უბრალოდ მოსწონს სხვაობა ქარი და ქარი. მონაცემები არის იგივე, მაგრამ ტიპის შეუძლია შეცვალოს თუ როგორ ინტერპრეტაცია მას. ჩემი სახელი არის იორდანიის Jozwiak, ამ cs50.