Nevím jestli to už bylo v seriálu uvedeno, ale celkem bych to potřeboval vědět.
Jak jsou uloženy základní datové typy v paměti počítače a jak s nimi procesor pracuje?
(předpokládám, že prostě na určité adrese se do paměti uloží nějaká data, která se pak přečtou. Jak se ale pozná co tam je za data (byte, int, real)? Nebo jak s tím pc (procesor) pracuje?)
Jednoduše řečeno - všechny hodnoty v paměti počítače jsou uloženy jako bajty :-) Tro3ku přesněji: některé typy mohou být uloženy jako sekvence bajtů (např. 4 bajtový integer je uložen jako sekvence po sobě jdoucích 4 bajtů, reálná čísla jsou vždy reprezentována více bajtově). Navíc, některé hodnoty mohou být reprezentovány jen části bajtu, jedním nebo více bity. Typicky se tento postup používá u úsporného uložení bitové množiny (BitSet), kdy se do prostoru 1 bajtu vejde 8 samostatných bitových příznaků.
V paměti se obvykle (věřím, že vždy, ale bojím se to vyslovit:-) není uložena žádná informace o tom, jakého typu je daná hodnota. Záleží na programu procesoru, jakým způsobem s daným místem v paměti.
Ještě doplním - procesor má různí instrukce pro práci s různými typy. Např. jinak si do svých registrů načítá reálné číslo, jinak integer. Záleží tedy čistě na programátorovi.
Zdravim, samozrejme se timto tematem budeme jeste zabyvat, ale v kratkosti:
V pameti neni (pri praci na tak nizke urovni, jako je strojovy kod, assembler ci jazyky typu C ci Pascal) zadna informace o tom, co se na konkretni bunce nachazi, takze je mozne napriklad na nejakou adresu ulozit integer (32 bitu) a precist ho jako realne cislo (float, taky 32 bity), nebo jako sekvenci ctyr ASCII znaku.
Tedy informace o typu je ulozena v programu, sam programator si musi ohlidat, co v pameti je a jak se s ni ma pracovat. Samozrejme prakticky vsechny jazyky (od assembleru vyse) mu s timto pomahaji, protoze pouzivaji takove abstraktni veci jako datove typy a objekty, ovsem i tak je mozne (a vlastne i nutne) nekdy tento typovy system obchazet.
díky všem, takže v samotné paměti nic o tom, jaký tam je uložený typ nic není(kromě samotného programu), to je velmi zajímavé (sem netušil, že datové typy jsou jenom abstraktní záležitostí, ale asi to tak je nejjednodušší).. :-)
Už se těším na díl s vysvětlenou touto problematikou. (a jak se vytvářejí ze základní sady instrukcí tyto abstraktní vymoženosti/nejen datové typy/. :-) )