
Datový typ v Pascalu pro čísla větší než longint?
Dobrý den. Zkouším teď něco v Pascalu a zajímalo by mě jestli je nějaký datový typ pro čísla větší než longint. Děkuji
Změna předmětu, původně: Datový typ v Pascalu (host)
Woow!! toto nestačí? -9223372036854775808 .. 9223372036854775807
LongWord 0 .. 18446744073709551615 ale len kladné...
Longint je jen –2 147 483 648 až 2 147 483 647.
Takhle mi to ukazuje.
Integer je 32-bit (-2147483648 .. 2147483647) a Longint má 64-bitový rozsah (-9223372036854775808 .. 9223372036854775807) je to rozdiel?, ale ak sa chceš hádať...
www.gnu-pascal.de
Já se nechci hádat, ale když použiju longint, tak mě to víc jak 2147483647 nepustí.
Však v poriadku...
"On some platforms" = na niektorých platformách. Na čom sa to snažíš? Procesor, OS, prekladač?
Používám Free Pascal IDE.
Snáď si to dokážeš preložiť do svojej rodnej reči a snáď to aj pochopíš: wiki.freepascal.org
Resp. tu: wiki.freepascal.org
Skus kuknut tu na Int64 alebo QWord
http://lazarus-ccr.sourceforge.net/fpcdoc/ref/refs u5.html#x26-260003.1.1
ale tie dve veci nemusia byt pouzitelne uplne vsade kde sa da pouzit integer, ale mali by byt pouzitelne (aj v 32bitovom programe)
P.S. ked to nepojde tak zahod pascal a pouzivaj C++, tam je __int64 bezproblemove.
Ale rozmysli si ci potrebujes dokonalu presnost, ak neporetbujes dokonalu presnost tak mozes pouzit realne cisla http://lazarus-ccr.sourceforge.net/fpcdoc/ref/refs u6.html#x27-300003.1.2
ale v tom pripade pozor na chyby vypoctu (vznikajuce zaokruhlovanim), ktore u realnych cisel nastavaju skoro vzdy.
Ak potrebujes narabat s extremne velkymi integer cislami (viac jak 2^64 tak si budes muset definovat ako pole a pre potrebne operacie napisat vlastne funkcie ktore narabaju s jednotlivimi castami cisla v poli.
Všetko mu to bude naprd, ak nemá procesor, ktorý dokáže používať 64-bit inštrukcie...
int64 funguje aj na 32bitovom prekladaci a teda aj na 32bitovom CPU. Je to predsa vec prekladaca. Nikde neni napisane ze int musi byt v jednom registri. Prekladac ho moze nacpat do dvoch. Delenie a nasobenie a scitane je mozne robit na x86 platforme aj s dvojicou registrov velmi jednoducho (scitanie s pomocou CY flagu a instrukcie na delenie a nasobenie robia s dvojicou registrov nativne, odjakziva //P.S. samozrejme musi prekladac pridat trochu kodu k tomu, neda sa to vseobecne urobit len jednou instrukciou).
BTW. keby si velmi chcel mohol by si si dodefinovat vlastne typy 128bitove, 256bitove, alebo trebars aj 65536bitove :D ako objekt (triedu) a definovat si k tomu typu zakladne aritmeticke operacie ako metody triedy...
P.S. v programovani neexistuje "neda sa". Existuje len "nikto to este za mna neurobil takze nemozem sa furt hrat na lepica komponentov, ale musim programovat nejaky komponent sam".
Ok, děkuji