Warum werden Bytes in c # im Gegensatz zu anderen Typen als Byte und Byte bezeichnet?
Ich war gerade blätterte in der Spezifikation und festgestellt, dass byte ungerade ist. Andere sind short, ushort, int, uint, long und ulong. Warum diese Benennung von sbyte und byte statt und byte ubyte?
InformationsquelleAutor der Frage suhair | 2010-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es eine Frage der Semantik. Wenn Sie denken, der ein byte, die Sie in der Regel (zumindest ich) denken, der ein 8-bit-Wert von 0 bis 255. Also das ist, was
byte
ist. Die weniger gängige interpretation der binären Daten ist ein Wert mit Vorzeichen (sbyte
) von -128 bis 127.Mit Ganzzahlen, es ist intuitiver zu betrachten vorzeichenbehaftete Werte, also das ist, was die grundlegenden name Stil repräsentiert. Die
u
Präfix ermöglicht dann den Zugriff auf die weniger Häufig unsigned Semantik.InformationsquelleAutor der Antwort Andrew Cooper
Der Grund, eine Typ "byte", ohne jedes andere Adjektiv, oft unsignierten während ein Typ "int", ohne jedes andere Adjektiv, wird oft unterschrieben, ist, dass nicht signierte 8-bit-Werte sind oft praktischer (und daher weit verbreitet) als signed Byte, aber Ganzzahlen mit Vorzeichen der größeren Arten sind oft praktischer (und daher weit verbreitet) als vorzeichenlose Ganzzahlen von solchen Typen.
Gibt es eine gemeinsame sprachliche Prinzip, dass, wenn ein "Ding" kommt in zwei Arten, "üblich" und "unüblich", der Begriff "Sache" ohne Adjektiv bedeutet eine "normale Sache"; der Begriff "ungewöhnliche Sache" ist verwendet, um sich auf den ungewöhnlichen Typ. Folgt diesem Prinzip, da nicht signierte 8-bit-Mengen sind weiter verbreitet als signierte, wird der Begriff "byte" ohne Modifikatoren bezieht sich auf den nicht signierten Geschmack. Umgekehrt, da Ganzzahlen mit Vorzeichen von größeren Größen werden häufiger verwendet als Ihre unsigned Entsprechungen, die Begriffe wie "int" und "long" bezieht sich auf die unterzeichneten Aromen.
Als der Grund für ein solches Nutzungsverhalten, wenn man die Durchführung der Mathematik auf zahlen einer bestimmten Größe, wird es in der Regel nicht Materie, außerhalb von vergleichen, die--ob die zahlen mit oder ohne Vorzeichen. Es gibt Zeiten, wenn es bequemer zu betrachten, Sie als unterschrieben (es ist natürlicher, zum Beispiel, zu sagen, zu denken, in Bezug auf das hinzufügen von -1 auf eine Nummer als 65535), aber für die meisten Teil, deklarieren zahlen unterzeichnet werden, benötigt keine zusätzliche Arbeit für den compiler, außer, wenn man entweder Vergleiche durchführen oder die Ausweitung der zahlen zu einer größeren Größe. In der Tat, wenn überhaupt, vorzeichenbehaftete integer-math-möglicherweise schneller, als unsigned-integer-math (seit unsigned-integer-math ist erforderlich, um erwartungsgemäß Verhalten bei überlauf, während unsigned Mathematik nicht).
Dagegen, da 8-bit-Operanden werden müssen, erweitert auf Typ 'int', bevor Sie irgendwelche Mathe bei Ihnen ein, muss der compiler erzeugen unterschiedliche code zum behandeln von signed-und unsigned-Operanden; in den meisten Fällen, die unterzeichnet Operanden erfordert mehr code als unsigned lieben. Also, in Fällen, in denen wäre es egal, ob ein 8-bit-Wert mit oder ohne Vorzeichen, macht es oft mehr Sinn, Werte ohne Vorzeichen. Weiter, die Zahl der größeren Arten werden oft zerlegt in eine Folge von 8-bit-Werte oder rekonstituierte aus einer solchen Sequenz. Solche Operationen sind einfacher mit 8-bit-unsigned-Typen als mit 8-bit signed-Typen. Aus diesen Gründen, unter anderem, nicht signierte 8-bit-Werte werden verwendet, viel häufiger als signierte 8-bit-Werte.
Beachten Sie, dass in der Sprache C, "char" ist ein merkwürdiger Fall, da alle Zeichen, die innerhalb der C-Zeichensatz erforderlich sind, zu übersetzen als nicht-negative Werte (also Maschinen, die eine 8-bit-char-Typ mit einem EBCDIC-Zeichensatz sind erforderlich, um "char" vorzeichenlos), aber ein "int" ist erforderlich, um alle Werte, die ein "char" kann (also Maschinen, bei denen beide "char" und "int" 16 bits erforderlich sind, um das "char" unterzeichnet werden).
InformationsquelleAutor der Antwort supercat