char immer 1 Byte? bool immer 1 Byte?
-
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
-
Braunstein schrieb:
und das sind laut 2.2.1 96Bit.
Nein, 96 Bit sind es bestimmt nicht.
-
Ok, hab mich verschrieben. Es sind natürlich 96 Zeichen.
-
Deep Thought schrieb:
1 <= sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Nein, sizeof(char) muss immer 1 sein!
Ansonsten findet sich die Stelle wohl im C89 Standard, wo festgelegt wird, dass CHAR_BIT 8 sein muss.
-
Folgendes gilt für C99:
5.2.4.2.1 Sizes of integer types <limits.h>
The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. Moreover, except for CHAR_BIT and MB_LEN_MAX, the following shall be replaced by expressions that have the same type as would an expression that is an object of the corresponding type converted according to the integer promotions. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.- number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8
minimum value for an object of type signed char
SCHAR_MIN -127 // -(27 - 1)
— maximum value for an object of type signed char
SCHAR_MAX +127 // 27 - 1
— maximum value for an object of type unsigned char
UCHAR_MAX 255 // 28 - 1
— minimum value for an object of type char
CHAR_MIN see below
— maximum value for an object of type char
CHAR_MAX see below
— maximum number of bytes in a multibyte character, for any supported localeIf the value of an object of type char is treated as a signed integer when used in an expression, the value of CHAR_MIN shall be the same as that of SCHAR_MIN and the value of CHAR_MAX shall be the same as that of SCHAR_MAX. Otherwise, the value of CHAR_MIN shall be 0 and the value of CHAR_MAX shall be the same as that of UCHAR_MAX.15) The value UCHAR_MAX shall equal 2CHAR_BIT - 1.
wo kann ich mir den C++ Standard kaufen (habe keine Kreditkarte) - geht das auch irgendwie per Überweisung oder so?
-
Vertexwahn schrieb:
wo kann ich mir den C++ Standard kaufen (habe keine Kreditkarte) - geht das auch irgendwie per Überweisung oder so?
kaufen? druck's dir doch aus. kannst es in'nem copy-shop auch als buch binden lassen
-
net schrieb:
kaufen? druck's dir doch aus. kannst es in'nem copy-shop auch als buch binden lassen
Und woher bekommt man den Text so dass man ihn ausdrucken kann, schlaumeier?
-
net schrieb:
Vertexwahn schrieb:
wo kann ich mir den C++ Standard kaufen (habe keine Kreditkarte) - geht das auch irgendwie per Überweisung oder so?
kaufen? druck's dir doch aus. kannst es in'nem copy-shop auch als buch binden lassen
Was willst du dir denn ausdrucken, wenn du das Teil nicht gekauft hast
@Vertexwahn
Das britische Standard Institut hat den Standard auch in Buchform rausgebracht.
-
Shade Of Mine schrieb:
Und woher bekommt man den Text so dass man ihn ausdrucken kann, schlaumeier?
den find'ste mit etwas 'googlen'
-
-
Vertexwahn schrieb:
bool immer 1 Byte?
Nein. Der Standard sagt lediglich, dass ein bool sich wie ein integraler Typ (char, short, int, long) verhalten muss. Darüber hinaus wird die Grösse nicht vorgeschrieben.
C++ Standard schrieb:
sizeof(bool) and sizeof(wchar_t) are implementationdefined
Der Standard wird sogar noch deutlicher
C++ Standard schrieb:
sizeof(bool) is not required to be 1
Und sizeof liefert ja bekanntlich die Grösse in Bytes.
-
BTW: Wenn ich das jetzt richtig verstanden habe, dann besteht ein char in C99 aus genau 8 Bits, da folgendes gelten muss #define CHAR_BIT 8 und sizeof(char) == 1
aber andernseits darf der wertebereich von unsigned char bzw. signed char auch größer als 256 verschiedene kombinationen sein - wie soll das gehen?