Zahlensysteme

Wechseln zu: Navigation, Suche

Ü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.

Und hier

Und hier noch etwas für Hexadezimal-Fanatiker: http://www.mikrocontroller.net/topic/302889