[Powered by Google Translate] JORDAN JOZWIAK: Aina akitoa, kwa maana rahisi, ni
njia ya kubadilisha tafsiri ya kompyuta ya baadhi ya data na
implicitly au waziwazi kubadilisha data zake aina.
Kama vile kubadilisha int kwa kuelea, au kinyume chake.
Kuelewa aina akitoa, tunahitaji
kuanza na shemu -
data aina wenyewe.
Katika lugha ya kompyuta kama C, kila vigezo na aina fulani
ya data aina kwamba huamua jinsi ya kompyuta, na vivyo hivyo
user, anatafsiri kwamba kutofautiana.
Namba data aina kama vile int kuelea, muda mrefu, na
mara mbili, wote wana sifa zao za kipekee na ni
kutumika kwa bayana maadili ya tofauti kati na usahihi.
Aina akitoa inaruhusu sisi kuchukua hatua floating idadi kama
3.14 na kupata sehemu kabla decimal, 3 katika kesi hii,
na akitoa kwa int.
Hebu chukua mfano kutoka lugha ya Kiingereza kwa kifupi
mapitio ya aina, na kuona jinsi akitoa aina inaweza kubadilika
njia ya sisi kutafsiri kipande cha data.
Kwa data, hebu kuchukua alama hapa.
Mimi tu rejea mistari haya kwa makini configured kama
ishara, lakini kama mtu ambaye anajua lugha ya Kiingereza,
wewe mara kutambua kwamba wao ni, kwa kweli, barua.
Wewe implicitly kueleweka aina data.
Kuangalia hii kamba ya barua tunaweza kuona wawili
tofauti ya maneno, kila na maana yake mwenyewe.
Kuna nomino, upepo, kama katika upepo unavuma nje.
Na kuna kitenzi, upepo, kama katika nahitaji
upepo zamu yangu ya analogi.
Huu ni mfano kuvutia, kwa sababu tunaweza kuona
jinsi ya aina ya kwamba sisi hawawajui data zetu, kama nomino au
verb, mabadiliko jinsi tunavyotumia data kwamba -
kama upepo neno au upepo.
Ingawa kompyuta hajali kuhusu sarufi na sehemu
ya hotuba ya Kiingereza, sawa kanuni ya msingi inatumika.
Hiyo ni, tunaweza kubadilisha tafsiri ya halisi
sawa data kuhifadhiwa katika kumbukumbu kwa kifupi akitoa kwa
aina tofauti.
Hapa ni ukubwa wa aina ya kawaida juu ya 32-bit
mfumo wa uendeshaji.
Tuna Char saa 1 int Byte, na kuelea katika ka 4, kwa muda mrefu
muda mrefu na mara mbili katika ka 8.
Kwa sababu int inachukua hadi ka 4, itachukua up bits 32
wakati ni kuhifadhiwa katika kumbukumbu kama mfululizo binary
ya zeros na ndio.
Muda mrefu kama variable yetu bado kama int aina,
kompyuta daima kubadilisha wale wale na zeros kutoka
binary katika idadi ya awali.
Hata hivyo, tunaweza kinadharia kutupwa wale 32
bits katika mfululizo wa aina Boolean.
Na kisha kompyuta itakuwa hakuna tena kuona idadi, lakini
badala ya ukusanyaji wa zeros na ndio.
Tunaweza pia kujaribu kusoma data kwamba kama numeric tofauti
aina, au hata kama kamba ya herufi nne.
Wakati wa kushughulika na idadi katika akitoa, ni lazima kuzingatia jinsi
usahihi wa thamani yako itakuwa walioathirika.
Kumbuka kwamba usahihi inaweza kukaa sawa,
au unaweza kupoteza usahihi, lakini unaweza kamwe kupata usahihi.
Hebu kupitia kwa njia tatu ya kawaida kwamba unaweza
kupoteza usahihi.
Akitoa kuelea kwa int kusababisha truncation wa kila kitu
baada ya uhakika decimal, hivyo wewe ni kushoto
na namba nzima.
Kama sisi kuchukua x kuelea ambayo itakuwa sawa 3.7, tunaweza kutupwa
this x variable kwa int kwa kifupi kuandika int katika
mabano.
Kila mara sisi kutumia muda huu haki hapa, tutaweza kwa ufanisi
kutumia thamani tatu kwa sababu tumekuwa truncated
kila kitu baada ya uhakika decimal.
Tunaweza pia kubadilisha muda mrefu int, ambayo itakuwa
vile vile kusababisha hasara ya bits high-utaratibu.
muda mrefu inachukua hadi ka 8, au bits 64 katika kumbukumbu.
Hivyo wakati sisi kuwatupia int ambayo tu ana ka 4, au 32
bits, sisi ni kimsingi chopping off bits wote kwamba
kuwakilisha maadili binary juu.
Unaweza pia kutupa mara mbili kwa kuelea, ambayo nitakupa
wewe kuelea karibu inawezekana mara mbili bila
lazima rounding yake.
Sawa na muda wetu kwa muda mrefu kwa uongofu int, hasara katika
usahihi ni kwa sababu mbili ina data zaidi.
mbili itawawezesha kuhifadhi 53 bits muhimu,
takribani 16 muhimu tarakimu.
Wakati kuelea tu kuruhusu kuhifadhi 24
muhimu bits, takribani saba muhimu tarakimu.
Katika kesi hizi mbili za mwisho, inaweza kuwa na manufaa kwa kufikiria
aina akitoa kama resizing picha.
Wakati wewe kwenda kutoka kawaida kubwa kwa kawaida ndogo, huwezi kuona
mambo kama wazi kwa sababu wewe kupoteza data
katika fomu ya saizi.
Aina akitoa pia inaweza kusababisha matatizo wakati sisi
kutupwa ints kwa inaelea.
Tangu ikifungwa kwenye mashine ya 32-bit tu kuwa 24
bits muhimu, hawawezi usahihi kuwakilisha maadili
zaidi ya 2 kwa nguvu ya 24, au 16,777,217.
Sasa hebu majadiliano juu akitoa wazi na thabiti.
Akitoa wazi ni wakati sisi kuandika aina katika mabano
kabla ya jina kutofautiana.
Kama mfano, kabla ya sisi aliandika int katika mabano kabla yetu
kuelea x kutofautiana.
Kwa njia hii, sisi kupata thamani int,
truncated thamani ya 3.7 -
3.
Kinachojitokeza ni wakati akitoa compiler moja kwa moja changes
sawa aina kwa aina super, au hufanya baadhi ya aina nyingine ya
akitoa bila kuhitaji mtumiaji kuandika
yoyote code ya ziada.
Kwa mfano, wakati sisi kuongeza 5 na 1.1, maadili yetu tayari kuwa na
aina kuhusishwa na wao.
5 ni int, ambapo 1.1 ni kuelea.
Ili kuongeza yao, kompyuta Anamfukuza 5 ndani ya kuelea,
ambayo ingekuwa kitu sawa kama kuandika 5.0 katika
nafasi ya kwanza.
Lakini kwa njia hii sisi kusema kuelea 5, au 5.0, pamoja na kile ilikuwa tayari
kuelea, 1.1, na kutoka hapo tunaweza kweli kuongeza hizi
maadili na kupata thamani 6.1.
Akitoa Kinachojitokeza pia inaruhusu sisi hawawajui vigezo ya
aina tofauti kwa kila mmoja.
Tunaweza daima hawawajui aina chini sahihi katika zaidi
sahihi moja.
Kwa mfano, kama tuna x mara mbili, na y int -
na haya inaweza kuwa na maadili yoyote kwamba sisi akawaweka -
tunaweza kusema x sawa y.
Kwa sababu mara mbili ana zaidi kuliko usahihi int, hivyo sisi
si kupoteza taarifa yoyote.
Kwa upande mwingine, ingekuwa siyo lazima kuwa sahihi kusema
y sawa x, kwa sababu mbili anaweza kuwa na thamani kubwa kuliko
integer.
Na hivyo integer wanaweza kuwa na uwezo wa kushikilia wote
taarifa iliyohifadhiwa katika mbili.
Akitoa Kinachojitokeza ni pia kutumika katika waendeshaji kulinganisha kama
kubwa zaidi kuliko, chini ya, au operator usawa.
Njia hii tunaweza kusema kama 5.1 ni kubwa kuliko 5, na sisi kupata
kusababisha kweli.
Kwa sababu ni int 5, lakini itabidi kutupwa kwa kuelea ili
kuwa ikilinganishwa na kuelea 5.1, tunatarajia kusema 5.1 ni
kubwa kuliko 5.0.
Huyo ni kweli na kusema iwapo 2.0 sawa sawa na 2.
Tunatarajia pia kupata kweli, kwa sababu kompyuta atamtupia
integer 2 kwa kuelea na kisha kusema 2.0 sawa sawa na 2.0,
hii ni kweli.
Usisahau kwamba tunaweza pia kutupwa kati ya ints na chars,
au ASCII maadili.
Chars pia haja ya kupunguzwa kwa binary, ambayo ni kwa nini
urahisi kubadili kati ya chars na husika yao
ASCII maadili.
Ili kujifunza zaidi kuhusu hili, angalia video wetu juu ya ASCII.
Wakati wewe kuchukua muda kufikiria jinsi data imehifadhiwa,
inaanza kufanya mengi ya akili.
Ni kama tu tofauti kati ya upepo na upepo.
data ni sawa, lakini aina inaweza kubadili jinsi sisi
kuifasiri.
Jina langu ni Jordan Jozwiak, hii cs50.