C - 32 bit egesz?

Nagy Zoltán nagy.zoltan at popkft.hu
Wed May 25 09:59:23 CEST 2005


Régen és most is úgy van, hogy:
char: 8 bit
int: processzor bitszáma (az adatregiszteré)
és ezen kívül csak ennyi van megkötve:
char <= short <= int <= long <= long long
ez pl. a gcc-n alapvetően a következő (de adott target esetén 
eltérhet!): char: 8 bit, short: 16 vagy 32 bit, int: 32 bit, long: 32 
bit, long long: 64 bit
A lényeg az, hogy az int az a gyors natív számolási mérete (ezért pl. 
Motorola 68000-en egyes fordítók 16 bitre állítják, mert az csak egy 
memóriaciklus a 16 bites külső adatbusz miatt, mások 32-re, mert az az 
alu és az adatregiszterek mérete).
A shor tlényege, hogy kevesebb helyett foglal.
A long lényege ha jól emléxem az, hogy elférjen benne egy pointer (mert 
van olyan rendszer ahol 16 bites az adatregiszter, de a címregiszter 
lehet hosszabb: pl. 386-os 16 bites módjaiban 32 bites címzéssel)
A long long meg valami újabb keletű dolog nagyon nagy egész számokhoz.

Ezt jól kitalálták valamikor a 60-as években csak az a gond vele, hogy 
nem élhetsz feltételezésekkel, pl. milyen típust használjak, ha el 
akarok számolni 70000-ig? int-et, vagy long-ot? 32 bites procin elég az 
int, 16 bitesen viszont a lasabb long kell...


2005. május 24. 23.54 dátummal SZIGETI Szabolcs ezt írta:
> Régen úgy volt (a mostani szabványt nem ismerem), hogy az int volt az
> alaveto gépi szó (tehát Pentium esetében 32 bit, alphan 64 bit,
> 286-on 16 bit). A long ennek kétszerese, a short fele. a char meg egy
> karakter, ami tipikusan 8 bit. De a dolog architektura fuggo, és
> elvileg az sem garantált, hogy a 8 bit többszöröse, de nem hiszem,
> hogy ma lenne ilyen általnos célú C implementáció, ami így
> viselkedne.

-- 
Nagy Zoltán
P.O.P. KFT.




More information about the Elektro mailing list