www.mikrocontroller.net

Forum: Compiler & IDEs Warum feste Bitbreite?


Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, gemeint ist der 8051.

Autor: johnny.m (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch die 8051er sind allesamt 8-Bit-µCs...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.