[Powered by Google Translate] JORDAN JOZWIAK: тып ліцця, у найпростым сэнсе,
спосаб змяніць інтэрпрэтацыю кампутары некаторыя дадзеныя
відавочна або няяўна змена яго тыпу дадзеных.
Такія, як змяненне унутр з паплаўком, ці наадварот.
Каб зразумець, прывядзенне тыпаў, мы павінны
Пачнем з асновы -
Дадзеныя тыпы саміх сябе.
У кампутарных моў, такіх як C, усе зменныя маюць нейкі
ад тыпу дадзеных, які вызначае, як кампутар, а таксама
Карыстальнік, інтэрпрэтуе гэтую зменную.
Лікавыя тыпы дадзеных, такія як INT, доўга-доўга, плаваць і
падвойныя, усе яны маюць свае ўласныя унікальныя характарыстыкі і
выкарыстоўваюцца для вызначэння значэнняў розных дыяпазонаў і дакладнасці.
Прывядзенне тыпаў дазваляе нам прымаць ліку з якая плавае кропкай, як
3.14 і атрымаць частку перад дзесятковай, 3 у дадзеным выпадку,
шляхам прывядзення яго да Int.
Давайце возьмем прыклад з ангельскай мовы для кароткага
агляд тыпаў і паглядзець, як прывядзенне тыпу можа змяніцца
Як мы інтэрпрэтаваць элемент дадзеных.
Па дадзеных, давайце сімвалы тут.
Я проста спасылацца на гэтыя старанна настроены ліній
сімвалы, але, як хтосьці, хто ведае ангельскую мову,
Вы адразу прызнаць, што яны з'яўляюцца, па сутнасці, літар.
Вы няяўна разумеецца тып дадзеных.
Гледзячы на ​​гэты радок літар, мы можам ўбачыць два
іншымі словамі, кожны са сваім уласным сэнсам.
Там у назоўнік, вецер, як і ў вецер дзьме звонку.
І ёсць дзеяслоў, вецер, як і ў Мне трэба, каб
вецер мой аналагавыя гадзіны.
Гэта цікавы прыклад, таму што мы бачым
як тып, які мы прыпісваем нашых дадзеных, ці з'яўляецца назоўнік або
Дзеяслоў, змены, як мы выкарыстоўваем гэтыя дадзеныя -
як вецер слова або ветру.
Хоць кампутар не клапоціцца аб граматыцы і частак
ангельскай мовы, той жа асноўны прынцып прымяняецца.
Гэта значыць, мы можам змяніць інтэрпрэтацыю дакладную
ж дадзеныя, якія захоўваюцца ў памяці, проста прывядзення яго да
розных тыпаў.
Вось памеры найбольш распаўсюджаных тыпаў на 32-разрадных
аперацыйнай сістэмы.
У нас ёсць знак у 1 байт, Int і плаваць на 4 байта, доўга
доўга і двайнога на 8 байт.
Таму што Int займае 4 байта, гэта зойме 32 біт
, Калі яна захоўваецца ў памяці ў выглядзе двайковага серыі
з нулёў і адзінак.
Пакуль наша пераменная застаецца як тыпу INT,
кампутар заўсёды будзе канвертаваць гэтыя нулі і адзінкі з
двайковай ў зыходнае лік.
Тым не менш, мы тэарэтычна маглі б кінуць гэтыя 32
Біты у серыі лагічных тыпаў.
І тады кампутар будзе ўжо не ўбачыць нумар, але
Замест набору нулёў і адзінак.
Мы маглі б таксама паспрабаваць прачытаць, што дадзеныя ў выглядзе розных лікавых
тыпу, або нават у выглядзе радкі з чатырох знакаў.
Калі маеш справу з лікамі ў кастынгу, неабходна разгледзець, як
Дакладнасць вашыя каштоўнасці будуць закрануты.
Майце на ўвазе, што дакладнасць можа застацца тое ж самае,
ці вы можаце страціць дакладнасць, але вы ніколі не можаце атрымаць дакладнасць.
Давайце пройдземся па трох найбольш распаўсюджаных спосабаў, якія вы можаце
страта дакладнасці.
Ліццё з якая плавае кропкай у цэлы лік выкліча ўсячэнне ўсё
пасля коскі, так што вы пакінулі
з цэлага ліку.
Калі ўзяць паплавок х, якая будзе роўная 3,7, мы можам кінуць
гэтая пераменная х у цэлы лік шляхам простага напісання Int ў
дужкі.
Кожны раз, калі мы выкарыстоўваем гэты тэрмін тут, мы будзем эфектыўна
выкарыстоўваць тры значэння, таму што мы ўсечаным
ўсё пасля коскі.
Мы таксама можа канвертаваць доўга-доўга INT, які будзе
Сапраўды гэтак жа прывесці да страты высокага парадку бітаў.
Доўга-доўга займае 8 байт, або 64 біта ў памяці.
Таму, калі мы кінулі яго ў цэлы лік якіх толькі 4 байта або 32
бітаў, мы, па сутнасці адсекшы ўсе біты,
ўяўляюць сабой больш высокія значэнні двайковага файла.
Вы маглі б таксама прывесці да падвойным паплаўком, які дасць
Вы бліжэйшы магчымы якая плавае кропкай у падвойным без
абавязкова акруглення яго.
Як і ў нашай доўгай доўга Int пераўтварэнні, страты ў
Дакладнасць у тым, што падвойныя утрымлівае дадатковую інфармацыю.
Падвойная дазволіць вам захоўваць 53 ўважаецца біт,
прыкладна 16 ўважаецца лічбаў.
У той час як паплавок будзе толькі дазваляюць захоўваць 24
ўважаецца біт, прыкладна ў сем ўважаецца лічбаў.
У гэтых апошніх двух выпадках, гэта можа быць карысна думаць пра
прывядзенне тыпу, як змяненне памеру фота.
Калі вы ідзяце ад вялікага памеру невялікага памеру, вы не можаце бачыць
рэчы, як выразна, таму што вы страцілі дадзеныя
ў выглядзе пікселяў.
Прывядзенне тыпаў таксама могуць выклікаць праблемы, калі мы
кінулі цэлыя паплаўкоў.
Так як паплаўкі на 32-бітнай машыне толькі ёсць 24
ўважаецца біт, яны не могуць дакладна ўяўляць значэння
больш чым 2 у ступені 24, або 16777217.
Зараз давайце пагаворым аб відавочных і няяўных ліцця.
Відавочнае прывядзенне, калі мы пішам тыпу ў дужках
перад імем зменнай.
Напрыклад, перш чым мы пісалі Int ў круглых дужках перад нашымі
плаваць зменнай х.
Такім чынам, мы атрымліваем цэлалікавых значэнне,
ўсечаным значэнні 3,7 -
3.
Невідавочнае прывядзенне, калі кампілятар аўтаматычна змяняе
падобнага тыпу ў супер тыпу, або выконвае некаторыя іншыя роды
ліццё не патрабуючы ад карыстальніка, каб напісаць
дадатковага кода.
Напрыклад, калі мы дадаем 5 і 1,1, нашы каштоўнасці ўжо ёсць
Тыпы звязаных з імі.
5 ўяўляе сабой цэлы лік, у той час як 1/1 з'яўляецца паплавок.
Для таго, каб дадаць іх, кампутар ставіць пад 5 у паплаўком,
якія былі б тое ж самае, як напісанне 5,0 ў
першае месца.
Але гэты шлях мы гаворым паплаўком 5, або 5,0, плюс тое, што ўжо было
паплаўка, 1,1, і адтуль мы сапраўды можам дадаць гэтыя
каштоўнасці і атрымаць значэнне 6.1.
Невідавочнае прывядзенне таксама дазваляе прызначыць зменныя
розных тыпаў адзін з адным.
Мы заўсёды можам прызначыць менш дакладны тып у больш
дакладнае адзін.
Напрыклад, калі мы маем падвойную х, Int у -
і гэта можа мець любыя значэння, якія мы ставім іх -
мы можам сказаць, х = у.
Паколькі падвойнае мае вялікую дакладнасць, чым INT, таму мы
не страціць любую інфармацыю.
З іншага боку, гэта не абавязкова будзе правільным сказаць,
У роўная х, таму што падвойныя можа мець большае значэнне, чым
лік.
І так цэлае, не магла б змясціць усіх
Інфармацыя, якая захоўваецца ў два разы.
Невідавочнае прывядзенне таксама выкарыстоўваецца ў аператарах параўнання, як
больш, менш або аператара роўнасці.
Такім чынам, мы можам казаць, калі 5,1 больш, чым 5, і мы атрымліваем
прывесці праўда.
Таму што 5 з'яўляецца INT, але гэта будзе прыведзены да паплаўка для таго, каб
можна параўнаць з паплаўком 5,1, мы б сказалі, 5.1,
больш 5,0.
Тое ж самае ставіцца і кажу, калі роўная 2,0 роўная 2.
Мы б таксама атрымаць сапраўднае, таму што кампутар будзе адкідаць
цэлае лік 2, каб плаваць, а затым сказаць роўная 2,0 роўная 2,0,
гэта праўда.
Не забывайце, што мы таксама можам кінуць паміж цэлымі і сімвалаў,
або ASCII значэння.
Сімвалы таксама павінны быць зведзены да двайковым, таму вы
можаце лёгка канвертаваць паміж сімвалы і адпаведныя ім
ASCII значэння.
Каб даведацца больш аб гэтым, азнаёмцеся з нашымі відэа на ASCII.
Калі вы бераце час, каб думаць пра тое, як дадзеныя захоўваецца,
ён пачынае рабіць шмат сэнсу.
Гэта як розніца паміж ветрам і ветру.
Дадзеныя ж, але выгляд можа змяніцца, як мы
інтэрпрэтаваць.
Мяне клічуць Джордан Jozwiak, гэта CS50.