Gast
#367587
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!
|
Anzeige
|
Warum feste Bitbreite?
Gast
#367587
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!
Gast
#367588
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.
Gast
#367589
...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...
Gast
#367590
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!
Gast
#367591
Sorry, gemeint ist der 8051.
Gast
#367592
Der ATMega16 hat, wie alle AVRs, eine 8-Bit-CPU! Genau auf diese µCs trifft der ganze Krempel zu!
Gast
#367593
Auch die 8051er sind allesamt 8-Bit-µCs... Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|