char immer 1 Byte? bool immer 1 Byte?
-
sizeof(char) ist ja irgendwo glaub ich definiert als 1
wo anders steht sizeof(datentyp) liefet immer die Größe in Bytes
Fragt sich jetzt nur wie der Standard ein Byte definiert
-
Beachte erstens, dass ein Byte in C++ nicht als Oktett definiert ist, wie es mittlerweile im Computer Bereich üblich ist. char ist ein Byte groß. Die größe der anderen Typen ist aber nicht festgelegt!
-
char ist immer 1 Byte groß. Das liegt aber eigentlich nur daran, dass der Begriff Byte im C und im C++-Standard nicht automatisch 8 Bit bedeutet, sondern gerade so definiert wird, dass diese Beziehung gilt. Kleiner als 8 Bit geht nicht, mehr allerdings schon. So gab es früher Rechner mit 9Bit-"Bytes", heute gibt es einige DSPs, die 32Bit-"Bytes" haben. Wenn man hier sprachlich unterscheiden will, bietet sich der Begriff "Oktett" für 8-Bit-Bytes an.
-
char hat 1 Byte, der Rest ist Verhandlungssache.
Vertexwahn schrieb:
Fragt sich jetzt nur wie der Standard ein Byte definiert
Eh? Wie würdest du denn ein Byte definieren??
-
In C kann man die Anzahl der Bits in einem char durch das Makro CHAR_BIT herausbekommen.
-
Kleiner als 8Bit geht nicht? Aha.
Ich dachte immer, char müsste nur den gesamten Zeichensatz abbilden können.
-
wer erzählt denn hier 8bit wären kein byte? von einem 9bit-byte habe ich noch nie was gehört, werde dem mal nachgehen
aber es ist im computerwesen nunmal ein standard das:
0000 0000 == 8 bit === 2 nibble == 1 byte
und 1111 1111 == 256 (höchster wert von unsigned char)
warum sollte sich eine programmiersprache diesem standard entziehen, versteh ich nicht, habe ich auch noch nie davon gehört...werde mich mal schlau machen
-
SeppSchrot schrieb:
Kleiner als 8Bit geht nicht? Aha.
Ich dachte immer, char müsste nur den gesamten Zeichensatz abbilden können.Im C Standard steht, dass der Typ char entweder so ist wie der Typ unsigned char oder wie der Typ signed char. Für unsigned char muss es mindestens den negativen Wert -127 und den positiven Wert 127 geben. Für signed char muss das Maximum größer gleich 255 sein. Daraus folgt, dass char mindestens 8 Bit haben muss.
-
enno-tyrant schrieb:
wer erzählt denn hier 8bit wären kein byte? von einem 9bit-byte habe ich noch nie was gehört, werde dem mal nachgehen
aber es ist im computerwesen nunmal ein standard das:
0000 0000 == 8 bit === 2 nibble == 1 byte
und 1111 1111 == 256 (höchster wert von unsigned char)
warum sollte sich eine programmiersprache diesem standard entziehen, versteh ich nicht, habe ich auch noch nie davon gehört...werde mich mal schlau machen
Du meinst wohl 255. Meiner Meinung nach ist Byte nur eine Konvention und nicht auf 8 Bits festgelegt. Oktett dagegen ist immer 8 Bits. Aber vielleicht gibt es eine DIN Norm, die Byte auf 8 Bits festlegt. Dann würde ich es in Deutschland als gültig ansehen.
-
Ponto schrieb:
...Du meinst wohl 255...
nein, 255+0=256 (nicht mathematisch)
'0000 0000' ist auch eine zahl, nämlich die erste und:
von 0000 0000 bis 1111 1111 sind genau 256
-
Ponto schrieb:
...negativen Wert -127 und den positiven Wert 127 geben...
mhh, waren es nicht: -128 und 127
-
enno-tyrant schrieb:
Ponto schrieb:
...Du meinst wohl 255...
nein, 255+0=256 (nicht mathematisch)
'0000 0000' ist auch eine zahl, nämlich die erste und:
von 0000 0000 bis 1111 1111 sind genau 256Dann schreib es in dieser Art hin und nicht so missverständlich wie vorher. 1111 1111 in binär entsprechen 255 in dezimal und nicht 256.
-
enno-tyrant schrieb:
Ponto schrieb:
...negativen Wert -127 und den positiven Wert 127 geben...
mhh, waren es nicht: -128 und 127
Da der Standard 2er-Komplement nicht vorschreibt sind es nur -127
-
enno-tyrant schrieb:
wer erzählt denn hier 8bit wären kein byte? von einem 9bit-byte habe ich noch nie was gehört, werde dem mal nachgehen
aber es ist im computerwesen nunmal ein standard das:
Mittlerweile, aber das kam wohl erst in den 80igern. Siehe dazu auch The Art of Computer Programming: Fundamental algorithms | ISBN: 0201896834 und das Kapitel über MIX. MIX benutzt sogar nur 5 Bit Bytes.
warum sollte sich eine programmiersprache diesem standard entziehen, versteh ich nicht, habe ich auch noch nie davon gehört...werde mich mal schlau machen
Naja, C++ versucht halt so wenig Anforderungen an die unterliegenden Systeme wie möglich zu stellen.
@Bashar
Wo steht das mit den mindestens 8 Bit? char muss doch nur den Grundzeichensatz speichern können und der ist ja nur 96 Buchstaben groß.
-
enno-tyrant schrieb:
von einem 9bit-byte habe ich noch nie was gehört, werde dem mal nachgehen
[...]
warum sollte sich eine programmiersprache diesem standard entziehenDie Programmiersprache ist schon um einiges älter als dieser Standard. In grauer Vorzeit gab es sowas eben. B, eine der Vorgängersprachen von C, wurde bspw. auf einem Rechner mit 36Bit-Worten entwickelt.
-
Die kleinste addressierbare Speichereinheit auf einer Zuse Z25 ist 18Bit groß. Jedes Speicherwort oder Byte wird durch 18 übereinanderliegende Lagen Ferritkernspeicher realisiert.
-
hab das hier gefunden:
http://www.wikiservice.at/dse/wiki.cgi?CeeByte
http://www.wikiservice.at/dse/wiki.cgi?CeeBesonderheitenbin nun ganz überzeugt
-
kingruedi schrieb:
Wo steht das mit den mindestens 8 Bit? char muss doch nur den Grundzeichensatz speichern können und der ist ja nur 96 Buchstaben groß.
in meinem schlauen C++ Buch steht auch etwas davon, das für alle Datentypen ein mindestbereich festgelegt ist, den sie darstellen können müssen
würd mich interessieren was, da in der ISO/IEC 14882:2003 steht
-
Vertexwahn schrieb:
in meinem schlauen C++ Buch steht auch etwas davon, das für alle Datentypen ein mindestbereich festgelegt ist, den sie darstellen können müssen
1 <= sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
-
Hallo,
Also in 3.9.1 steht
Objects declared as characters (char) shall be large enough to store any member of the implementation’s
basic character set. ...und das sind laut 2.2.1 96Bit.
Ciao