Express-Binärzahlen in C ++

C ++ Variablen werden intern als sogenannte Binärzahlen gespeichert. Binärzahlen sind als eine Folge von 1 und 0-Werte gespeichert bekannt als Bits.

Menu

Die meiste Zeit, brauchen Sie nicht wirklich mit zu behandeln, die bestimmte Bits, die Sie zur Darstellung von Zahlen verwenden. Manchmal jedoch ist es praktisch und bequem mit Zahlen auf Bit-Ebene zu basteln - so gibt es in C ++ eine Reihe von Betreibern zu diesem Zweck.

Die sogenannte bitweise logische Operatoren arbeiten auf Bit-Ebene auf ihre Argumente. Um zu verstehen, wie sie funktionieren, zunächst zu prüfen, wie Computer speichern Variablen.

Das Dezimalsystem

Die Zahlen haben Sie vertraut mit der Zeit konnte man zuerst an den Fingern abzählen sind bekannt als Dezimalzahlen weil sie auf der Nummer 10. Im allgemeinen basiert sind, drückt der Programmierer C ++ Variablen als Dezimalzahlen. So könnten Sie den Wert angeben var als (sagen wir) 123, aber die Auswirkungen in Betracht ziehen.

Eine Zahl wie 123 bezieht sich auf 1 * 100 + 2 * 10 + 3 * 1. Alle diese Basiszahlen - 100, 10 und 1 - Potenzen von 10.

= 1 * 123 100 + 2 * 10 + 3 * 1

Ausgedrückt in einer etwas anderen (aber Äquivalent) Weise sieht 123 wie folgt aus:

123 = 1 * 102 + 2 * 101 + 3 * 100

Erinnere dich daran irgendein Nummer auf den Nullkraft 1 ist.

Andere Zahlensysteme

Na ja, okay, unter Verwendung von 10 als Basis (oder Base) Unseres Zählsystem stammt vermutlich von den 10 menschlichen Finger, die ursprünglichen Zählung Werkzeuge. Eine alternative Basis für ein Zählsystem könnte genauso gut 20 gewesen.

Wenn unser Nummerierungsschema wurde von Hunde erfunden worden, sie könnte auch auf 8 basieren (eine Ziffer von jeder Pfote ist außer Sicht auf den hinteren Teil des Beines). Mathematisch ein solcher oktal System hätte genauso gut funktioniert:

12310 = 1 * 82 + 7 * 81 + 3 * 80 = 1738

Das kleine 10 und 8 hier beziehen sich auf das Zahlensystem, 10 für dezimal (Basis 10) und 8 für oktal (Basis 8). Ein Zählsystem kann jede positive Basis verwenden.

Das binäre Zahlensystem

Computer haben im Wesentlichen zwei Fingern. Computer bevorzugen Zählen Base 2. Die Anzahl 12310 würde auf diese Weise ausgedrückt werden:

12310 = 0 * 27 + 1 * 26 + 1 * 25 + 1 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 * 2012310 = * 128 + 0 1 * 64 + 1 · 32 + 1 · 16 + 1 · 8 + 0 * 4 + 1 * 2 + 1 * 1 = 01.111.0112

Computer convention drückt Binärzahlen von 4 unter Verwendung von, 8, 16, 32 oder sogar 64 Binärstellen, auch wenn die führenden Ziffern 0. Dies ist auch wegen der Art, Computer intern eingebaut sind.

Da der Begriff Ziffer bezieht sich auf ein Vielfaches von 10, ein Binärzahl genannt wird, ein Bit (Eine Abkürzung für Binärzahl). EIN Byte besteht aus acht Bits. (Aufruf einer Binärziffer ein byte-it nicht wie eine gute Idee zu sein scheinen.) Speicher in der Regel in Bytes gemessen wird (wie Rollen in Einheiten von Bäckerhefe Dutzend gemessen werden).

Mit solch einer kleinen Basis, haben Sie zu verwenden groß Anzahl der Bits Zahlen auszudrücken. Die Menschen wollen nicht die Mühe der Verwendung eines Ausdrucks wie 011110112 zum Ausdruck bringen, eine solche banale Wert als 12310. Programmierer bevorzugen Zahlen ausdrücken durch eine gerade Anzahl von Bits verwendet wird.

Das Oktalsystem - die auf drei Bits basiert - war die Standard-binäres System in den frühen Tagen von C. Wir haben ein Überbleibsel dieser auch heute noch zu sehen - eine Konstante, die mit einer 0 beginnt, wird davon ausgegangen, Oktal zu sein in C ++. Somit ist die Zeile:

cout lt; lt; "0173 =" lt; lt; 0173 lt; lt; endl-

erzeugt die folgende Ausgabe:

0173 = 123

Jedoch wurde Oktal fast vollständig durch die ersetzte hexadezimal System, das auf 4-Bit-Ziffern basiert.

Hexadezimal verwendet die gleichen Ziffern für die Zahlen 0 bis 9. Für die Ziffern zwischen 9 und 16, hexadezimal verwendet die ersten sechs Buchstaben des Alphabets: A 10, B 11, und so weiter. So, 12310 wird 7B16, so was:

123 = 7 * 161 + B (d 11) * 160 = 7B16

Programmierer bevorzugen hexadezimale Zahlen in Vielfachen von 4 hexadezimalen Ziffern ausdrücken, auch wenn die erste Ziffer jeweils 0 ist.

Schließlich wer will eine hexadezimale Zahl auszudrücken wie 7B16 durch einen Index verwenden? Terminals nicht einmal unterstützen Indizes. Selbst an einem Textverarbeitungsprogramm, es ist ein Drag & Fonts nur zum und vom Index-Modus zu ändern zwei lausig Ziffern einzugeben.

Daher Programmierer (nicht dumm, sie) verwenden, um die Konvention eine hexadezimale Zahl mit einem von Anfang 0x. So, 7B wird 0x7B. Mit dieser Konvention, die Hexadezimalzahl 0x7B ist auf 123 dezimal gleich, während 0x123 hexadezimal ist auf 291 dezimal gleich. Der Code-Schnipsel

cout lt; lt; "0x7B =" lt; lt; 0x7B lt; lt; Endl-cout lt; lt; "0x123 =" lt; lt; 0x123 lt; lt; endl-

erzeugt die folgende Ausgabe:

0x7B = 1230x123 = 291

Sie können alle mathematischen Operatoren auf hexadezimale Zahlen in der gleichen Weise verwenden Sie sie Dezimalzahlen gelten würde.

Wenn Sie wirklich wollen, können Sie Binärzahlen in C ++ '14 schreiben das Präfix "0b" verwenden. Somit wird 123 0b01111011.

Menü