Inhaltsverzeichnis:
Video: Writing 2D Games in C using SDL by Thomas Lively 2024
C ++ - Variablen werden intern als so genannte Binärzahlen gespeichert. Binäre Zahlen werden als eine Folge von 1 und 0 Werten gespeichert, die als Bits bekannt sind. Die meiste Zeit müssen Sie sich nicht wirklich mit Zahlen auf der Bit-Ebene befassen. es gibt jedoch Gelegenheiten, bei denen dies bequem ist. C ++ stellt zu diesem Zweck eine Reihe von Operatoren bereit.
Die sogenannten bitweisen logischen Operatoren arbeiten mit ihren Argumenten auf der Bit-Ebene. Um zu verstehen, wie sie funktionieren, untersuchen Sie, wie Computer Variablen speichern.
Das Dezimalzahlensystem
Die Zahlen, die Ihnen bekannt sind, werden als Dezimalzahlen bezeichnet, da sie auf der Zahl 10 basieren. Im Allgemeinen drückt der Programmierer C ++ Variablen als Dezimalzahlen. Daher würden Sie sagen, dass der Wert von var beispielsweise 123 ist.
Eine Zahl wie 123 bezieht sich auf 1 * 100 + 2 * 10 + 3 * 1 . Jede dieser Basiszahlen - 100, 10 und 1 - ist eine Potenz von 10.
123 = 1 * 100 + 2 * 10 + 3 * 1
Etwas anders, aber gleichwertig ausgedrückt:
123 = 1 * 10 2 + 2 * 10 1 + 3 * 10 0
Denken Sie daran, dass jede Zahl zur Null-Potenz 1 ist.
Andere Zahlensysteme
Die Verwendung einer Grundzahl von 10 für Das Zählsystem beruht aller Wahrscheinlichkeit nach auf der Tatsache, dass Menschen 10 Finger haben, die ursprünglichen Zählwerkzeuge. Die Alternative wäre Base 20.
Wenn Hunde unser Nummernschema erfunden hätten, könnte es gut sein, dass sie auf der Ziffer 8 basieren (eine Ziffer jeder Pfote ist auf dem hinteren Teil des Beins nicht sichtbar). Ein solches Oktal -System hätte genauso gut funktioniert:
123 10 = 1 * 8 2 + 7 * 8 1 999 + 3 * 8 0 = 173 8 Die kleinen 10 und 8 beziehen sich hier auf das Nummerierungssystem, 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 Finger. (Vielleicht ist das der Grund, warum Computer so dumm sind: Ohne einen opponierbaren Daumen können sie nichts begreifen. Und dann wieder, vielleicht nicht.) Computer bevorzugen das Zählen mit Basis 2. Die Zahl 123 10
würde ausgedrückt als:
123
10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 01111011 < 2
Es ist immer üblich, binäre Zahlen durch Verwendung von 4, 8, 32 oder 64 Binärziffern auszudrücken, selbst wenn die führenden Ziffern Null sind. Das liegt auch daran, wie Computer intern gebaut werden. Da der Ausdruck Ziffer
sich auf ein Vielfaches von zehn bezieht, wird eine Binärziffer als Bit
bezeichnet. Der Begriff stammt von einer binären (b-) Stelle (-it).Acht Bits bilden ein Byte. Ein Wort ist normalerweise zwei oder vier Bytes.
Bei einer so kleinen Basis ist es notwendig, eine große Anzahl von Bits zu verwenden, um Zahlen auszudrücken. Es ist unbequem, einen Ausdruck wie 01111011 2 zu verwenden, um einen solchen weltlichen Wert wie 123 10 auszudrücken. Programmierer bevorzugen es, Zahlen durch Einheiten von Bytes oder acht Bits auszudrücken.
Eine einzelne Vier-Bit-Ziffer ist im Wesentlichen die Basis 16, da vier Bits einen beliebigen Wert von 0 bis 15 ausdrücken können. Die Basis 16 ist als das Hexadezimal -Zählsystem bekannt. Hexadezimal wird häufig mit Hex angegeben. Hexadezimal verwendet die gleichen Ziffern für die Zahlen von 0 bis 9. Für die Ziffern zwischen 9 und 16 verwendet Hexadezimal die ersten sechs Buchstaben des Alphabets: A für 10, B für 11 und so weiter. Somit wird 123
10 zu 7B 16 .
123 = 7 * 16 1 + B (dh 11) * 16 0 = 7B
16 Weil Programmierer Zahlen in 4, 8 vorziehen B. 32 oder 64 Bit, bevorzugen sie es ähnlich, hexadezimale Zahlen in 1, 2, 4 oder 8 Hexadezimalziffern auszudrücken, selbst wenn die führenden Ziffern 0 sind. Schließlich ist es unbequem, eine Hexadezimalzahl wie 7B < 16 mit einem Index, da Terminals keine Indizes unterstützen. Sogar in einem Textverarbeitungsprogramm ist es unpraktisch, Schriftarten in den und aus dem Subscript-Modus zu wechseln, nur um zwei Ziffern einzugeben. Daher verwenden Programmierer die Konvention, eine Hexadezimalzahl mit einer 0x zu beginnen (der Grund für eine solche seltsame Überzeugung reicht bis in die Anfänge von C zurück). Somit wird 7B 0x7B. Unter Verwendung dieser Konvention ist 0x7B gleich 123 (während 0x123 gleich 291 ist). Alle mathematischen Operatoren können auf hexadezimale Zahlen auf die gleiche Weise ausgeführt werden, wie sie auf Dezimalzahlen angewendet werden. Der Grund dafür, dass wir keine Multiplikation wie 0xC * 0xE in unseren Köpfen durchführen können, hat mehr mit den Multiplikationstabellen zu tun, die wir in der Schule gelernt haben, als mit irgendeiner Beschränkung im Zahlensystem.