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