Forum: Compiler & IDEs Warum feste Bitbreite?


von Axel (Gast)


Lesenswert?

Hallo,
was ist der Vorteil, wenn ich uint8_t bzw int8_t statt int einsetze?
Ist das nur ein geringerer Speicherplatzbedarf? Wie groß ist der von
int? Oder gibt es noch andere Vorteile?

Dank Euch!

von johnny.m (Gast)


Lesenswert?

int hat per Definition (ANSI-Norm) immer mindestens 16 Bit. Und es ist
nicht nur der Speicherbedarf, sondern auch die Tatsache, dass ein
8-Bit-µC nur 8 Bit auf einmal verarbeiten kann. Jeder Zugriff auf
größere Werte dauert erheblich länger, ist aufwändiger was den Code
angeht (rumspielen mit Flags...) und auch nicht mehr atomar. Der
Speicherbedarf spielt bei einem µC, der u.U. nur ein paar hundert Bytes
(oder z.T. auch noch weniger) SRAM besitzt, ebenfalls eine große Rolle.
Aus diesen Gründen nimmt man bei µCs eigentlich für Variablen immer nur
so viele Bits wie nötig, um den gewünschten Zahlenbereich darstellen zu
können. Wenn man eine Variable hat, die nur Werte von 0..100 annehmen
kann, reicht ein char (bzw. uint8_t) völlig aus. Es erhöht die
Performance und schont die Ressourcen.

von johnny.m (Gast)


Lesenswert?

...Ergänzung: Das oben gesagte bezieht sich natürlich auf 8-Bit-µCs. Bei
einer 16- oder 32-Bit-CPU macht es dann keinen Unterschied mehr, ob man
int oder char nimmt. Der ANSI-Standard definiert int als Typ, der die
natürliche Breite der Maschine (also CPU) hat, allerdings eben mit der
Einschränkung, dass int mindestens 16 Bit breit ist. Der ANSI-Standard
ist nunmal nicht auf 8-Bit-CPUs zugeschnitten...

von Axel (Gast)


Lesenswert?

Hmm, das hätte ich schreiben sollen. Eingesetzt war der Atmega16, d.h.
Deine zweite Antwort spricht genau das an, ein Geschwindigkeitsvorteil
ist nicht zu erwarten, oder? Also nur der Ressourcenvorteil.

Danke für die schnelle und kompetente Antwort!

von Axel (Gast)


Lesenswert?

Sorry, gemeint ist der 8051.

von johnny.m (Gast)


Lesenswert?

Der ATMega16 hat, wie alle AVRs, eine 8-Bit-CPU! Genau auf diese µCs
trifft der ganze Krempel zu!

von johnny.m (Gast)


Lesenswert?

Auch die 8051er sind allesamt 8-Bit-µCs...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.