[Powered by Google Translate] JORDANI JOZWIAK: hedhjes Tipi, në sensin thjeshte, është një
mënyrë për të ndryshuar interpretimin e një kompjuteri të disa të dhënave nga
mënyrë eksplicite ose implicite ndryshimin e të dhënave llojin e vet.
Të tilla si duke ndryshuar një int, float për një ose anasjelltas.
Për të kuptuar hedh lloj, ne kemi nevojë për
të fillojë me bazat -
Llojet e të dhënave vetë.
Në gjuhë kompjuterike si C, të gjitha variablave të ketë disa lloj
e të dhënave të llojit që përcakton se si kompjuteri, dhe gjithashtu
përdoruesit, interpreton atë ndryshore.
Të dhënat numerike lloje të tilla si një int, float kohë të gjatë, dhe
dyfishtë, të gjithë kanë karakteristikat e veta unike dhe janë
përdorur për të specifikojë vlerat e ndryshme vargjet dhe saktësi.
Lloji i hedh na lejon të marrin një numër lundrues pikë si
3.14 dhe për të marrë pjesë para dhjetore, 3 në këtë rast,
duke hedhur atë në një int.
Le të marrin një shembull nga gjuha angleze për një të shkurtër
shqyrtimin e llojeve, dhe për të parë se si hedh lloji mund të ndryshojë
rruga ne interpretojnë një pjesë të të dhënave.
Për të dhëna, le të marrin simbolet këtu.
Unë vetëm i referohen këtyre linjave konfiguruar me kujdes si
simbolet, por si dikush që e di gjuhën angleze,
ju menjëherë pranojnë se ata janë, në fakt, letra.
Ju implicite kuptuar llojin dhënave.
Kërkoni në këtë vargun e shkronjave ne mund të shohim dy
fjalë të ndryshme, secila me kuptimin e vet.
Nuk është emër, era, si në goditjet era jashtë.
Dhe nuk ka folje, era, si në kam nevojë për të
era orë analoge time.
Ky është një shembull interesant, sepse ne mund të shohim
si lloji që ne të caktojë të dhënave tona, qoftë emër ose
, folje ndryshime si ne e përdorin që të dhënat -
si era fjalë ose era.
Edhe pse një kompjuter nuk kujdeset për gramatikën dhe pjesëve
e fjalës angleze, i njëjti parim themelor vlen.
Kjo është, ne mund të ndryshojmë me interpretimin e saktë
njëjtat të dhëna të ruajtura në kujtesën nga thjesht hedh atë në një
lloj i ndryshëm.
Këtu janë të madhësive të llojeve më të zakonshme në një 32-bit
sistemit operativ.
Ne kemi një char në 1, int bajt dhe noton në 4 bytes, një të gjatë
gjatë dhe një të dyfishtë në 8 bytes.
Sepse një int merr 4 byte, ajo do të marrë deri në 32 bit
kur ajo është e ruajtur në kujtesë si një seri binar
nga zero dhe ato.
Për aq kohë sa variabël tonë mbetet si një int lloji,
kompjuteri gjithmonë do të konvertohet ato ato dhe zero nga
binar në numrin origjinal.
Megjithatë, ne mund të teorikisht hedhur ato 32
bit në një seri të llojeve Boolean.
Dhe pastaj kompjuteri nuk do të shihni një numër, por
vend një koleksion i zero dhe ato.
Ne gjithashtu mund të përpiqen për të lexuar të dhënat se si numerike ndryshme
shkruani, apo edhe si një varg prej katër karaktere.
Kur kanë të bëjnë me numrat në hedhjes, ju duhet të konsideroni se si
saktësi e vlerës tuaj do të ndikohen.
Mbani në mend se saktësi mund të qëndrojnë të njëjta,
ose ju mund të humbni saktësi, por ju nuk mund të fitojë saktësi.
Le të shkojë përmes për tri mënyrat më të zakonshme që ju mund të
humbin saktësi.
Hedh një noton në një int do të shkaktojë truncation për çdo gjë
pas presjes dhjetore, kështu që ju jeni mbetur
me numër të tërë.
Nëse marrim x noton e cila do barabartë me 3.7, ne mund të hidhet
kjo x variabël në një int nga thjesht shkruar në int
kllapat.
Kurdo që ne i përdorim këtë term i drejtë këtu, ne do të në mënyrë efektive
të jetë duke përdorur vlerën e tre sepse ne kemi prerë
gjithçka pas presjes dhjetore.
Ne gjithashtu mund të konvertohet në një kohë të gjatë në një int, e cila do të
ngjashme të çojë në një humbje të lartë të rendit bit.
Një kohë të gjatë merr 8 bytes, ose 64 bit në kujtesën.
Kështu që kur kemi hedhur atë në një int i cili ka vetëm 4 byte, ose 32
bit, ne jemi në thelb kishte prerë të gjitha bit që
përfaqësojnë vlerat më të larta binar.
Ju gjithashtu mund të hedhin një dopio në një float, e cila do t'i japë
ju noton afërt të mundshme të dy pa
domosdoshmërisht arrestimi ajo.
Ngjashëm me afat të gjatë për të konvertimit tonë int, humbja në
saktësi është për shkak se një të dyfishtë përmban më shumë të dhëna.
Një dyfishtë do t'ju lejojë të ruajtur 53 bit rëndësishme,
afërsisht 16 shifra të konsiderueshme.
Ndërsa një noton vetëm do të ju lejojnë për të ruajtur 24
bit të konsiderueshme, afërsisht shtatë shifra të konsiderueshme.
Në këto dy rastet e fundit, ajo mund të jetë e dobishme për të menduar për
shkruani hedh si Resizing një foto.
Kur ju shkoni nga një madhësi të madhe për një madhësi të vogël, ju nuk mund të shihni
gjërat sa më qartë sepse ju ka humbur të dhënat
në formën e pixels.
Lloji i hedh gjithashtu mund të shkaktojë probleme kur kemi
hedhur në ints gjithandej.
Që gjithandej në një makinë 32-bit të ketë vetëm 24
bit e rëndësishme, ata nuk mund të përfaqësojë vlerat e saktë
mbi 2 për fuqinë e 24, ose 16777217.
Tani le të flasim për hedh eksplicite dhe implicite.
Hedh qartë është kur ne shkruani llojin në kllapa
para emrin e ndryshueshme.
Si një shembull, para se të shkruante në kllapa para int tonë
noton x ndryshueshme.
Në këtë mënyrë, ne kemi marrë vlerën int, të
vlera e cunguar e 3.7 -
3.
Hedh nënkuptuar është kur përpiluesit automatikisht ndryshon
lloje të ngjashme të një lloji super, ose kryen një lloj tjetër të
hedh pa kërkuar përdoruesit për të shkruar
çdo kodi shtesë.
Për shembull, kur ne të shtoni 5 dhe 1.1, vlerat tona tashmë kanë
Llojet e lidhur me ta.
E 5 është një int, ndërsa 1.1 është një noton.
Në mënyrë që të shtoni ato, kompjuteri hedh 5 në një noton,
e cila do të kishte qenë e njëjta gjë si me shkrim në 5,0
vendin e parë.
Por në këtë mënyrë themi noton 5, ose 5,0, plus çfarë ishte tashmë
a noton, 1.1, dhe nga atje ne mund të vërtetë të shtoni këto
vlerat dhe të marrë vlerën 6.1.
Hedh nënkuptuar gjithashtu na lejon të caktojë variablave të
Llojet e ndryshme të njëri-tjetrit.
Ne gjithmonë mund të caktojë një lloj pak më të saktë në një
një saktë.
Për shembull, në qoftë se ne kemi një të dyfishtë x, y dhe një int -
dhe këto mund të ketë ndonjë vlerat që ne kemi vendosur ato në -
ne mund të themi x y barabartë.
Sepse dyfishtë ka saktësi më shumë se një int, kështu që ne
nuk do të humbasë ndonjë informacion.
Nga ana tjetër, kjo nuk do domosdoshmërisht të jetë e saktë të thuhet
y x barabartë, sepse dyfishtë mund të ketë një vlerë më të madhe se
integer.
Dhe kështu numër i plotë nuk mund të jetë në gjendje të mbajë të gjitha
Informacioni ruhet në dyfishin.
Hedh nënkuptuar është përdorur edhe në krahasim operatorëve si
më e madhe se, më pak se, ose operatori barazia.
Në këtë mënyrë ne mund të themi nëse 5,1 është më e madhe se 5, dhe ne të merrni
rezultojë e vërtetë.
Sepse 5 është një int, por ajo do të hidhet në një noton në mënyrë që të
të krahasohet me float 5.1, ne do të themi është 5.1
më e madhe se 5.0.
E njëjta gjë është e vërtetë me thënë, nëse është e barabartë me 2.0 barabartë me 2.
Ne do të merrni edhe e vërtetë, sepse kompjuteri do të hedhin
integer 2 për noton dhe pastaj thonë se 2.0 barabartë me 2,0 barabartë,
kjo është e vërtetë.
Mos harroni se ne mund të hedhin në mes të ints dhe karktereve,
ose vlerat ASCII.
Chars gjithashtu duhet të reduktohet në binar, e cila është arsyeja pse ju
lehtë mund të konvertohet në mes të karaktere dhe të tyre përkatëse
Vlerat ASCII.
Për të mësuar më shumë për këtë, shikoni videon tonë në ASCII.
Kur ju keni marrë një moment për të menduar rreth asaj se si të dhënave është ruajtur,
ajo fillon të bëjë shumë kuptim.
Është vetëm si dallimi në mes era dhe era.
Të dhënave është i njëjtë, por lloji mund të ndryshojë mënyrën se si ne
interpretojnë atë.
Emri im është Jordan Jozwiak, kjo CS50.