Was ist die binäre Darstellung von "256"?

Was ist die binäre Darstellung von "256"?

Sie können Dezimalzahlen in Binärzahlen und Binärzahlen in Dezimalzahlen umwandeln. Aber wie können Sie die Zahl „256“ darstellen?

255 = 11111111

1 Byte kann nicht mehr als 8 Binärziffern (Bits) haben. Wie ist das möglich?

Antwort1

Sie fragen, wie man 256 im Binärsystem darstellt, aber ich schätze, Sie fragen sich, warum die Leute sagen, dass in Bytes 256 verschiedene Zahlen gespeichert werden können, wenn die größte gespeicherte Zahl 255 ist. Wie Claudiop sagte, beginnen Computer bei 0 zu zählen, also ist 0 eigentlich die erste Zahl, 1 die zweite, 2 die dritte … 255 ist die 256.

Außerdem ist 11111111 nur 255 für vorzeichenlose Bytes. Wenn Sie ein vorzeichenbehaftetes Byte haben (ein vorzeichenbehafteter Wert ist ein Wert, der negative Werte enthalten kann), ist 11111111 eigentlich -1. Siehehttp://en.wikipedia.org/wiki/Zweierkomplement. Das Zweierkomplement funktioniert so, dass das Addieren einer negativen Zahl zu einer positiven Zahl 0 ergibt. Wie andere bereits gesagt haben, wenn wir ein Bit zu 11111111 addieren und Ihr Datentyp nur 8 Bits unterstützt, läuft das letzte Bit über und Sie erhalten 0. Für vorzeichenbehaftete Bytes liegen die Werte zwischen -128 und 127. 128 negative Zahlen + 0 + 127 positive Zahlen = insgesamt 256 Zahlen.

Bei vorzeichenbehafteten Werten ist das erste Bit das „Vorzeichen“-Bit. Wenn dieses Bit gesetzt ist, ist die Zahl negativ. 10000000 ist negativ, 01000000 ist positiv, 11111111 ist negativ, 01111111 ist positiv...

Wenn Sie Windows verwenden (vielleicht ist dies auf Mac auch verfügbar), können Sie den Rechner öffnen, ihn in den Programmiermodus schalten, „sbyte“ auswählen und mit den Bits herumspielen, um zu sehen, wie sie mit ihrer Dezimaldarstellung korrelieren.

Windows-Rechner zeigt 256 im Dezimal- und Binärformat an

Antwort2

Nun, Sie benötigen 2 Bytes, um das darzustellen. 256 = 00000001 00000000

Antwort3

Wie du bereits weißt, ist 255d (dezimal) gleich 11111111b (binär). Möchtest du nun zu diesem Wert noch 1 addieren, gibt es zwei Möglichkeiten:

Entweder man hat nur 8 Bit. In diesem Fall wird ein sog.Überlaufpassiert. Also wird „intern“ die 1 hinzugefügt, was zu 100000000b (256d in 9 Bits) führt. Da Ihnen aber nur 8 Bits zur Verfügung stehen, werden die unteren 8 Bits „zurückgegeben“. Sie erhalten also 0d = 0b (nur als Randbemerkung, auf den meisten Computerarchitekturen wird ein spezielles Überlaufflag gesetzt.)

Stellen Sie sich das so vor, als würden Sie mit Ihren Fingern zählen. Stellen Sie sich vor, Ihre Finger zeigen 9d. Jetzt fügen Sie einen weiteren Finger hinzu. Am Ende haben Sie 10. Was tun Sie, wenn Sie noch einen weiteren Finger hinzufügen möchten?

Die andere Möglichkeit ist, dass Sie mehr als 8 Bit zur Verfügung haben. In diesem Fall können Sie einfach eine weitere Ziffer an den Anfang anhängen und das Ergebnis ist dann tatsächlich 100000000b = 256d.

Ein Byte ist die kleinste "Einheit", die ein Computersystem (Speichersystem) adressieren kann. Das bedeutet, wenn Sie nur ein einzelnes Bit wissen möchten, müssen Sie das Speichersystem bitten, Ihnen ein bestimmtes Byte von einer Adresse zu geben, und Sie müssen dann selbst den Wert des Bits herausfinden, an dem Sie interessiert sind.

Aber genauso wie 8 Bits ein Byte ergeben, gibt es auch größere Datentypen. 2 Bytes ergeben ein Wort (16 Bits), zwei Wörter (vier Bytes, 32 Bits) ergeben ein Doppelwort. Und die heute üblichen 64-Bit-Architekturen haben sogar 64-Bit-Datentypen (sogenannte Register).

Antwort4

Sie können es darstellen durch einBitverschiebungBedienung (links oder rechts, je nachByte-Reihenfolgeder binären Darstellung). Dieser Einzeiler funktioniert beispielsweise für eine Big-Endian-Darstellung (höchstwertiges Byte zuerst):

1 << 8

Ein nicht signierterBytekann nur 256 Werte enthalten, was den Bereich von [0 - 255] umfasst. Für den Wert 256 müssten Sie einen Datentyp verwenden, der einen größeren Wert enthalten kann, beispielsweise eine Ganzzahl.

verwandte Informationen