Ausdruck Binärzahlen in C ++

C ++ Variablen werden intern als sogenannte Binärzahlen gespeichert. Binärzahlen

Menu

werden als eine Folge von 1 und 0-Werte gespeichert bekannt als Bits. Die meiste Zeit, die Sie nicht wirklich mit den Zahlen an der Bit beschäftigen müssen jedoch Ebene-, gibt es Gelegenheiten, wenn sie dies tun bequem ist. C ++ bietet eine Reihe von Betreibern für diesen Zweck.

Die sogenannten bitweise logischen Operatoren arbeiten auf ihre Argumente auf Bit-Ebene. Um zu verstehen, wie sie funktionieren, untersuchen, wie Computer speichern Variablen.

Das Dezimalsystem

Die Zahlen, die Sie vertraut sind mit sind bekannt als Dezimalzahlen weil sie auf der Nummer 10. Im allgemeinen basieren, drückt der Programmierer C ++ Variablen als Dezimalzahlen. Somit würde man sagen, dass der Wert von var 123 ist, zum Beispiel.

Eine Zahl wie 123 bezieht sich auf 1 * 100 + 2 * 10 + 3 * 1. Jede dieser Basiszahlen - 100, 10 und 1 - ist eine Leistung von 10.

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

Ausgedrückt in einer etwas anderen, aber äquivalente Weise:

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

Denken Sie daran, dass jede Zahl auf die Nullleistung 1 ist.

Andere Zahlensysteme

Die Verwendung einer Basenzahl von 10 für das Zählsystem Stielen, aller Wahrscheinlichkeit nach aus der Tatsache, dass Menschen 10 Finger haben, die ursprüngliche Zählung Werkzeuge. Die Alternative wäre gewesen, Basis 20.

Wenn Hunde unser Nummerierungsschema erfunden hatte, ist es gut wurde auf die Ziffer 8 kann haben auf Basis (eine Ziffer von jeder Pfote aus den Augen auf dem hinteren Teil des Beines ist). So ein oktal System hätte genauso gut funktioniert:

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

Die kleine 10 und 8 beziehen sich hier 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. (Vielleicht ist das, warum Computer so dumm sind: Ohne opponierbaren Daumen, sie kann nichts verstehen und dann wieder, vielleicht auch nicht..) Computer bevorzugen Zählen Base 2. Die Nummer 12310 würde ausgedrückt werden als:

12310 = * 128 + 0 1 * 64 + 1 · 32 + 1 · 16 + 1 · 8 + 0 * 4 + 1 * 2 + 1 * 1
= 011110112

Es ist immer Konvention Binärzahlen auszudrücken unter Verwendung von 4, 8, 32 oder 64 binären Ziffern, auch wenn die führenden Ziffern Null sind. Dies ist auch wegen der Art, Computer intern eingebaut sind.

Da der Begriff Ziffer auf ein Vielfaches von zehn bezieht, wird eine binäre Ziffer genannt Bit. Der Begriff stammt aus binären (b-) Ziffer (-es). Acht Bit bilden ein Byte. Ein Wort ist üblicherweise entweder zwei oder vier Bytes.

Mit solchen kleinen Basis, ist es notwendig, eine große Anzahl von Bits zu verwenden, um Zahlen auszudrücken. Es ist unbequem, einen Ausdruck wie 01111011 zu verwenden2 zum Ausdruck bringen, eine solche banale Wert als 12310. Programmierer bevorzugen Zahlen von Einheiten von Bytes oder acht Bits auszudrücken.

Eine einzelne, Vier-Bit-Ziffer ist die Basis im Wesentlichen 16, weil vier Bits auf einen beliebigen Wert von 0 bis 15 Basis ausdrücken kann 16 ist bekannt als die hexadezimal Zählsystem. Hexadezimal wird oft einfach unter Vertrag verhexen.

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. Somit 12310 wird 7B16.

123 = 7 * 161 + B (das heißt, 11) * 160 = 7B16

Da Programmierer Zahlen bevorzugen in 4, 8, 32 oder 64 Bits auszudrücken, ziehen sie ähnlich hexadezimale Zahlen in 1, 2, 4 oder 8 hexadezimalen Ziffern auch zum Ausdruck bringen, wenn die führenden Ziffern 0 sind.

Schließlich ist es unbequem, eine hexadezimale Zahl wie 7B auszudrücken16 unter Verwendung eines Index, weil Terminals nicht Indizes unterstützen. Sogar auf einem Wortprozessor, ist es unbequem fonts nur zu und von Index-Modus zu wechseln zwei Ziffern einzugeben. Daher verwenden Programmierer die Konvention eine hexadezimale Zahl mit 0x von Anfang (der Grund für eine solche seltsame Überzeugung geht zurück auf die frühen Tage von C). Somit 7B wird 0x7B. Mit dieser Konvention ist 0x7B gleich 123 (während 0x123 gleich 291.)

Alle der mathematischen Operatoren können auf hexadezimale Zahlen in der gleichen Weise durchgeführt werden, dass sie in dezimale Zahlen angewendet werden. Der Grund, dass wir nicht eine Multiplikation wie 0xC * 0xE in unseren Köpfen durchzuführen hat mehr mit den Multiplikationstabellen zu tun, die wir in der Schule gelernt haben, als auf jede Beschränkung in der Anzahl System.

Menü