Zahlensysteme
Übersicht
In der Programmierung werden vier Zahlensysteme verwendet: dezimal, hexadezimal, oktal, binär (besser: dual).
Zahlensystem | Basis | Ziffern |
---|---|---|
dezimal | 10 | 0 .. 9 |
hexadezimal | 16 | 0 .. 9, A .. F |
oktal | 8 | 0 .. 7 |
dual | 2 | 0 .. 1 |
Einige Zahlenbeispiele:
dezimal | hexadezimal | oktal | dual |
---|---|---|---|
0 | 00 | 000 | 00000000 |
1 | 01 | 001 | 00000001 |
15 | 0F | 017 | 00001111 |
100 | 64 | 144 | 01100100 |
255 | FF | 377 | 11111111 |
Darstellung
Hexadezimal
Hexadezimalzahlen werden meistens (z. B. in C oder im AVR-Assembler) mit dem Prefix "0x" geschrieben, also z. B. 0x3A; auch anzutreffen ist die Schreibweise mit einem führenden "$" (z. B. $3A).
Die vierstellige hexadezimale Schreibweise wird gerne verwendet um zwei Bytes zusammenzufassen:
Bsp.: 0x010F => 01 ist das High Byte, 0F ist das Low Byte.
Oktal
Oktalzahlen schreibt man in C mit einer führenden "0".
C-Programmierer sollten sich die führende Null bei Oktalzahlen unbedingt merken, auch wenn sie keine Oktalzahlen verwenden wollen. Denn es bedeutet, dass man Dezimalzahlen nicht mit führenden Nullen schreiben darf. "64" und "064" sind zwei völlig verschiedene Zahlen. Das erste ist die dezimale Zahl 64, das zweite die oktale Zahl 64, was der dezimalen Zahl 52 entspricht. Das gilt auch für AVR-ASM.
Binär
Binärzahlen schreibt man im AVR-Assembler mit "0b" am Anfang, z. B. 0b00110100. In C-Programmen ist die direkte Eingabe von Binärzahlen nicht möglich, es lassen sich aber Makros zu diesem Zweck schreiben. Einige Compiler verfügen über eine Spracherweiterung, bei der meist der Präfix "0b" für Binärzahlen benutzt wird.
Intel-Syntax
Assembler mit Intel-Syntax (z. B. für 80x86 oder 8051) verwenden dagegen zur Kennzeichnung keinen Präfix sondern einen Postfix. Für Hexzahlen gilt also z. B. die Notation 0A5H, für Oktalzahlen 245O (oder 245Q) und für Binärzahlen dementsprechend 10100101B.
Verschiedenes
Anmerkung zu Oktalzahlen
Oktalzahlen sind in der Mikrocontroller-Programmierung heute seltener anzutreffen. Praktisch sind sie vor allem dann, wenn Binärzahlen aus irgend einem Grund in Gruppen von jeweils drei Bit strukturiert sind. Das gilt z. B. für die Datei-Zugriffsrechte unter Unix/Linux, die sich bequem durch Angabe einer Oktalzahl einstellen lassen (z. B. entspricht "751" dem Bitmuster "111 101 001" oder "rwxr-x--x" in der üblichen Zugriffsrecht-Darstellung.) .
Umrechnung
Viele Taschenrechner können die Zahlensysteme umrechnen, so auch der Windows-Taschenrechner oder der UNIX-Taschenrechner bc. Wie die Umrechnung mathematisch funktioniert, ist hier beschrieben. Zur Umrechnung von Nachkommastellen siehe hier.
Siehe auch
- Forenthread Einführung des Hexadezimalsystems und Website sedimal.eu mit der Intention der Einführung des hexadezimalen Zahlensystems im Alltag