Größe byte - (Klärung)
Schreibe ich einen game-server, und dies ist vielleicht eine einfache Frage, aber ich möchte nur einige Klarstellungen.
Warum ist es, dass ein byte (char oder unsigned char) kann bis zu einem Wert von 255 (0xFF, ich glaube, Sie ist 2 Byte)? Wenn ich sizeof(unsigned char)
der compiler sagt mir, es ist 1 byte.
Ist es, weil (im ACSII -) es ist immer "konvertiert" zu einem Zeichen?
Sorry für diese schlechte Erklärung, ich bin nicht wirklich gut in der Beschreibung eine Frage stellen.
0xFF
2 Ziffern, die nicht aus 2 bytes. Ein byte ist 0..2^8-1.0xFF ist 2 nibbles... 1 byte...
Sie gehen zu wollen, Lesen Sie die Informationen über den Datentyp, die Größe und Bandbreite here.
char
konnten 8 bits, oder es könnte sein, 64-bit, in jedem Fall ist "byte" definiert, "char", also ein byte könnte die mehr als 8 bit.Ein byte nicht 8 bit. Ein byte ist in der Norm definiert als die Größe einer
char
jedoch viele bits, ist. ISO (und anderen Normungsgremien) neigen dazu, den Begriff Oktett für 8-bit-Wert. Siehe stackoverflow.com/questions/1535131/... für mehr info.InformationsquelleAutor Guus Geurkink | 2011-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese berührt auf eine Reihe von Themen, darunter die historische Bedeutung der byte, die C definition einer char und Mathematik.
Für den Anfang, ein byte hat in der Vergangenheit schon eine Menge Dinge, aber heutzutage sind wir nahezu immer, dass ein Byte 8 bits. Als ein Wortspiel, es gibt auch die nybble (oder oft knabbern), die ist ein halbes byte (nicht genannt Biss).
Mathematik sagt uns, dass mit einer geordneten Kombination von 8
1-or-0
Werte, bekommen wir28 = 256
Kombinationen. Manchmal benutzen wir diese nicht, manchmal unterzeichnet, aber so oder so, wir wollen eine 0 in dem Bereich, also wird der vorzeichenlose Bereich ist0..255
. Für die signed range, wir haben weitere Optionen, von denen Zweierkomplement ist das populärste; in diesem Fall erhalten wir eine weitere negative Wert als positiv, für eine Reihe von-128..+127
.C++ erbt char aus C, wo es definiert ist, um eine
sizeof
1, die kleinste adressierbare Größe (dh eine eindeutige Adresse, die Werte mit &), und eine minimale Reichweite von-128..127
oder0..255
je nachdem, ob es signiert ist oder nicht. Das läuft darauf hinaus, dass mindestens 8 bits oder ein byte; genau ein byte, wenn die Maschine unterstützt.0xff
ist eine andere Art des Schreibens, 255.0x
ist der C-Markierung einer hexadezimal konstant, so dass jede Ziffer 4 bits (16 möglichen Ziffern), ergo die Hälfte. Dieses übersetzt in ein unsigned Byte mit allen bits auf 1 gesetzt.Wenn bestimmte auf die Größe ankommt, um Ihren code, es ist ein header, der stdint.h , definiert Typen von minimal und genaue Größen für die Geschwindigkeit oder Größe-Optimierung.
Übrigens, ASCII ist ein 7-bit-Zeichensatz. Maschinen mit 7-bit-bytes sind ungewöhnlich heutzutage, und die größere Zeichensätze wie ISO 8859-1 und UTF-8 sind beliebt.
InformationsquelleAutor Yann Vernier
0xFF
können gespeichert werden, in 8 bit, was ein byte ist.sizeof(char)
definiert ist, immer 1 zurück, unabhängig von der tatsächlichen Größe in bits des zugrunde liegenden Datentyp (siehe 5.3.3.1 der aktuelle standard). Die Größen aller anderen dataypes sind berechnet relativ zu der Größe eineschar
.InformationsquelleAutor Björn Pollex
Die Größe der
char
[ob es signed oder unsigned ] ist immer 1 Auftrag durch die C++ - Standard.InformationsquelleAutor Prasoon Saurav
Sizeof char oder unsigned char ist 1 Byte, da pro der standard.
, Warum verschiedene Bereiche, wenn gleiche Größe?
Daher,
signed char
Bereich ist von-128 to 127
unsigned char
Bereich ist von0 to 255
Dies ist, weil im Falle von
signed char
eines der bits zum speichern der Zeichen, während seitunsigned char
werden kann -ve, das bit utlized um die Reichweite zu erhöhen.1 byte nicht unbedingt 8 bit haben - es ist nur der häufigste Wert
Fair genug, Kommentar zurückgezogen. Ich war neugierig, als einige Systeme zu tun bekommen lustig reicht, tagged integers und so.
InformationsquelleAutor Alok Save
255, 0xFF, ist ein byte, wenn dargestellt als ein unsigned char. Sie können nicht darstellen, 255 als ein signed-char.
Ja, die Reichweite eines signed byte -128..127
InformationsquelleAutor geofftnz
1 byte ist 8 bit, so im Falle des
InformationsquelleAutor Ahmed Kotb
char
Größe ist immer1
aber die Anzahl der bits, die Verschieden sein kann, C define-makroCHAR_BIT
, die Anzahl von bits im char.Dies bedeutet maximale Wert, der
unsigned char
haben kann, istpow(2, CHAR_BIT) - 1
.Mehr info dort: Was ist CHAR_BIT?
InformationsquelleAutor Yankes