Cee Byte
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
In der SpracheCee ist ein Byte die kleinste adressierbare Speichereinheit und entspricht in der Größe dem Datentyp "char". Ein solches CeeByte kann je nach Computer und sogar nach Compiler (oder Compiler-Memorymodell) unterschiedlich groß sein (z.B. 8, 9, 10, 16, 32, 64, ... Bit) und ist nicht identisch mit dem EdvByte.
Wissenswertes dazu:
- sizeof(char) ist per definition immer = 1 !!!
- Anmerkung (1): sizeof() liefert die Größe des übergebenen "Daten-Typs" bzw. "Daten-Objekts" in CeeBytes zurück.
- Anmerkung (2): Der CeeStandard verwendet daher die Begriffe "char" und "byte" praktisch wie Synonyme.
- Eine Konstante CHAR_BIT im Headerfile limits.h definiert die systemspezifische Anzahl der Bits eines CeeBytes.
- Die Mindestgröße eines CeeByte ist 8 Bit.
- Die Größe eines Datentyps oder einer Variablen in Bit errechnet sich (daher) aus:
- CHAR_BIT * sizeof(TYP_ODER_VARIABLE)
Welche Konsequenzen hat das:
- C passt sich der zugrundeliegende Hardware an und erlaubt immer die optimale Performance.
- Binäre Strukturen - in binäre Files geschrieben - sind nicht portabel. Siehe BinäreDateiFormate.
- Die unterschiedliche Bedeutung des Wortes "Byte" in der C-Welt bzw. im allgemeinen (EDV-)Sprachgebrauch gibt regelmäßig Anlass zu Missverständnissen und Auseinandersetzungen (siehe MegaThread).
- ...
Kommentare und Diskussionen | |
Wo geht denn das hervor? --rae
- Aus dem C-Standard (siehe CeeStandard).
C-Standard=K&R? ok, da steht drin, daß die Größen abhängig von der Maschine sind, aber wo hast Du die Zahlenwerte her? Mir sind für char bisher nur 8-Bit begegnet, die 16-Bit-Werte kenne ich als w_char und 32-Bit vom Unicode her. Aber wo gibt es 9, 10, 64, ... Bit? --rae
- Nein, ANSI-C-Standard, konkrete Zahlen stehen dort aber nicht. Maschinenabhängig heißt, du musst mit allem rechnen. Die Zahlenwerte 9, 10 sind eher historisch (z. B. habe ich einmal längere Zeit an einem 9-Bit-Byte/36-Bit-Wort Univac-Großrechner gearbeitet), aber es gibt scheinbar noch Maschinen dieses Typs. Die Zahlenwerte 32 und 64 sind absolut gängig auf modernen Rechnern, meist UNIX. Ich kenne es nur aus Diskussionen, aber auf einem Cray-Supercomputer (wenn ich mich recht erinnere) gibt es nur 64-Bit-Datentypen, und 32-Bit-Beispiele gibt es eine ganze Menge. w_char und Unicode ist eine ganz andere Geschichte.
- Ich habe noch nie von einer Maschine oder einem System gehört, wo ein Byte nicht 8 oder 9 Bit hätte. Wobei 9 Bit in grauer Vorzeit war... konkrete Hinweise auf die "absolut gängigen" 32-Bit-Bytes wären nett; auf allen mir bekannten aktuellen Plattformen (PC mit Win32, PC mit Linux, PC mit BSD, Sun mit Solaris, S/390 mit OS/390) hat ein Byte 8 Bit.
- Es gibt einen DSP von TI, den TMS320C33. Bei dem sind alle Datentypen 32-Bit breit, auch ein char.
Siehe auch CeeBesonderheiten CeeStandard
KategorieC KategorieCee
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 29. November 2007 8:26 (diff))