[Powered by Google Translate] Jordan JOZWIAK: Tipo malplenigita, en la plej simpla senco, estas
maniero por ŝanĝi al komputilo lego de iuj datumoj de
implice aŭ eksplicite ŝanĝanta ĝia datumtipo.
Kiel ŝanĝi la int por kaleŝego, aŭ inverse.
Por kompreni tipo malplenigita, ni bezonas
starti kun la fundamentoj -
datumtipoj sin.
En komputilo lingvoj kiel C, ĉiuj variabloj havas ian
de datumtipo kiu determinas kiom la komputilo, kaj same
la uzanto, interpretas ke variablo.
Nombraj datumtipoj tiaj kiel int, longa tempo, kaleŝego kaj
duobla, ĉiuj havas siajn proprajn trajtojn unika kaj estas
uzita al precizigi valoroj de varianta gamoj kaj precizeco.
Tipo casting nin permesas preni glitpunkta nombro kiel
3.14 kaj akiri la parto antaŭ la dekuma, 3 en ĉi tiu kazo,
per jxetantajn ŝin al int.
Ni prenu ekzemplon de la angla lingvo por mallonga
revizii de tipoj, kaj vidi kiel tipo casting povas ŝanĝi
la vojo ni interpreti peco de datumoj.
Por datumoj, ni prenu la simboloj tie.
Mi nur raporti al tiuj zorgeme agordis linioj kiel
simboloj, sed kiel iu kiu konas la anglan lingvon,
vi tuj agnoski ke ili estas, fakte, leteroj.
Vi implice komprenita la datumtipo.
Rigardante tiun ĉenon de literoj oni povas vidi du
malsamaj vortoj, ĉiu kun sia signifo.
Jen la substantivo, vento, kiel en la vento blovas ekstere.
Kaj tie estas la verbo, vento, kiel en mi bezonas
vento mia analoga horloĝo.
Tiu estas interesa ekzemplo, ĉar ni povas vidi
kiom la tipo kiu ni atribuas al niaj datumoj, ĉu substantivo aŭ
verbo, ŝanĝoj kiel ni uzas tiun datumoj -
kiel la vorto vento aŭ vento.
Kvankam komputilo ne zorgas pri gramatiko kaj partoj
de angla lingvo, la sama baza principo validas.
Tio estas, ni povas ŝanĝi la lego de la ĝusta
samaj datumoj stokitaj en memoro per simple jxetantajn ĝin al
malsama tipo.
Jen la grandecoj de la plej komunaj tipoj sur 32-bita
mastruma sistemo.
Ni havas char je 1 bajto, int kaj flosas en 4 bajtoj, longa
longa kaj duobla al la 8 bajtoj.
Ĉar int okupas 4 bajtoj, estos preni 32 bitoj
kiam estas stokita en memoro kiel duuma serio
de nuloj kaj aĵoj.
Tiel longe kiel nia variablo restas kiel tipo int, la
komputilo ĉiam konverti tiujn kaj nuloj de
duuma en la originala nombro.
Tamen, ni povus teorie jxetu tiuj 32
bitoj en serio de Bulea tipoj.
Kaj tiam la komputilo ne plu vidas numeron, sed
anstataŭ kolekto de nuloj kaj aĵoj.
Ni povus ankaŭ provi legi tiun datumon malsamaj nombraj
tajpi, aŭ eĉ kiel linio de kvar signojn.
Kiam kontraktanta kun nombroj en malplenigita, vi devas konsideri kiel
la precizeco de via valoro estos trafitaj.
Konsideru ke la precizeco povas resti la sama,
aŭ vi povas perdi precizecon, sed vi neniam povas gajni precizeco.
Ni iru tra la tri plej komunaj formoj kiuj vi povas
perdi precizecon.
Jxetantajn kaleŝego al int kaŭzos tranĉon de ĉio
post la dekuma punkto, do vi forlasis
kun la tuta nombro.
Se vi prenos la kaleŝego x kiu egalos 3.7, ni povas jxetu
ĉi variablo x al int per simple skribi int en
krampoj.
Kiam ajn ni uzas ĉi tiun terminon ĉi tie, ni efektive
esti uzanta la valoro tri ĉar ni senpintigita
ĉio post la dekuma punkto.
Ni povas ankaŭ konverti longaj al int, kiu volas
simile konduki al perdo de alta ordo bitoj.
Longa tempo okupas 8 bajtoj, aŭ 64 bitoj en memoro.
Do kiam ni ĵetis ĝin al int kiu nur havas 4 bajtoj, aŭ 32
bitoj, ni esence batante sur ĉiuj bitoj kiujn
reprezentas la plej duuma valoroj.
Vi povus ankaŭ jxetu duobla al kaleŝego, kiu donos
vi la plej proksima ebla kaleŝego al la duobla sen
nepre rondigas ĝin.
Simila al nia longa tempo por int konvertiĝo, la perdo en
precizeco estas ĉar duoblan enhavas pli datumojn.
Duobla permesos stoki 53 signifa bitoj,
proksimume 16 signifaj ciferoj.
Dum kaleŝego nur permesas stoki 24
signifa bitoj, proksimume sep signifaj ciferoj.
En ĉi tiuj du lastaj kazoj, ĝi povas esti utila pensi pri
tajpi casting kiel regrandigi foton.
Kiam vi iros de granda amplekso al malgranda grandeco, vi ne povas vidi
aĵoj kiel klare ĉar vi perdis datumoj
en formo de rastrumeroj.
Tipo casting povas ankaŭ kaŭzi problemojn kiam ni
jxetu ints al flosas.
Ekde flosas sur 32-bita maŝino nur havas 24
signifa bitoj, ili ne povas precize prezenti valorojn
super 2 al la potenco de 24, aŭ 16777217.
Nun ni parolu pri eksplicita kaj implica casting.
Eksplicita casting estas kiam ni skribas la tipo en krampoj
antaux variablo nomo.
Kiel ekzemplo, antaŭ ol ni skribis int en krampoj antaŭ niaj
flosi variablo x.
Tiamaniere, ni preni la int valoro, la
senpintigita valoro de 3,7 -
3.
Implicita casting estas kiam la tradukilo aŭtomate ŝanĝas
simila tipoj super tipo, aŭ plenumas iu alia speco de
jxetantajn sen postuli la uzanto por skribi
neniu plia kodo.
Ekzemple, kiam ni aldonas 5 kaj 1,1, niaj valoroj jam havas
tipoj asociita kun ili.
La 5 estas int, dum 1,1 estas kaleŝego.
Por aldoni ilin, la komputilo ĵetas 5 en kaleŝego,
kiu estus estinta la sama afero kiel skribi 5.0 en la
unuan lokon.
Sed tiamaniere ni diras kaleŝego 5, aŭ 5.0, alpago, kio jam
kaleŝego, 1.1, kaj de tie ni povas vere aldoni tiujn
valorojn kaj atingi la valoron 6.1.
Implicita casting ankaŭ permesas al ni atribui variablojn de
malsamaj tipoj al ĉiu alia.
Ni povas ĉiam asigni malpli preciza tipo en pli
preciza unu.
Ekzemple, se ni havas duoblan x, kaj int y -
kaj ĉi tiuj povus havi ajnan valoroj kiujn ni starigis ilin al -
ni povas diri x egalas y.
Ĉar la duoblaj havas pli precizeco ol int, do ni
ne perdos neniun informon.
Aliflanke, ĝi ne nepre estu ĝentila diri
y egalas x, ĉar la duoblaj havu pli grandan valoron ol
la entjero.
Kaj tial la entjero eble ne povos teni la tuta
informo stokita en la duobla.
Implicita casting estas uzata ankaŭ en komparo operatoroj kiel
pli granda ol, malpli ol, aŭ la egalecon operatoro.
Tiel ni povas diri se 5.1 estas pli granda ol 5, kaj ni preni la
rezulti vera.
Ĉar 5 estas int, sed estos jxetita al kaleŝego por
estas egala al la kaleŝego 5.1, ni dirus 5.1 estas
pli granda ol 5.0.
La sama estas vera kun diri se 2.0 egalas egalas 2.
Ni ŝatus ankaŭ akiri vera, ĉar la komputilo forpusxos la
entjero 2 flosi kaj poste diri 2.0 egalas egalas 2.0,
ĉi tio estas vera.
Ne forgesu, ke ni povas ankaŭ ĵetis inter ints kaj signoj,
aŭ ASCII valoroj.
Signaĵoj ankaŭ bezonas esti reduktita al binaraj, tial vi
povas facile konverti inter signoj kaj iliaj respektivaj
ASCII valoroj.
Por lerni pli pri ĉi tio, kontrolu nian video sur ASCII.
Kiam vi preni momenton por pensi pri kiel datumoj estas stokita,
komencas fari multajn senco.
Estas nur kiel la diferenco inter vento kaj vento.
La datumoj estas la sama, sed la tipo povas ŝanĝi nian manieron
interpreti ĝin.
Mia nomo estas Jordanon Jozwiak, ĉi cs50.