Zahlensysteme: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
K (→‎Verschiedenes: Verweise auf Offtopic-Thread bzw. ideologische Website entfernt, da ohne sachlichen Bezug zum Thema)
(Überschriften-Syntax korrigiert, Links auf Hexadezimal-Thread und sedimal-Website unter neuem Abschnitt „Siehe auch“ wieder eingefügt)
 
Zeile 1: Zeile 1:
=Übersicht=
== Übersicht ==
In der Programmierung werden vier Zahlensysteme verwendet:
In der Programmierung werden vier Zahlensysteme verwendet:
'''dezimal''', '''hexadezimal''', '''oktal''', '''binär''' (besser: '''dual''').
'''dezimal''', '''hexadezimal''', '''oktal''', '''binär''' (besser: '''dual''').
Zeile 34: Zeile 34:
|}
|}


=Darstellung=
== Darstellung ==
 
=== Hexadezimal ===
==Hexadezimal==
'''Hexadezimal'''zahlen 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).
'''Hexadezimal'''zahlen 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).


Zeile 42: Zeile 41:
Bsp.: 0x010F => 01 ist das High Byte, 0F ist das Low Byte.
Bsp.: 0x010F => 01 ist das High Byte, 0F ist das Low Byte.


==Oktal==
=== Oktal ===
'''Oktal'''zahlen schreibt man in [[C]] mit einer führenden "0".
'''Oktal'''zahlen 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.
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är ===
'''Binär'''zahlen 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 [[C Makros|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.
'''Binär'''zahlen 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 [[C Makros|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==
=== 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.
[[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 ==
=Verschiedenes=
=== Anmerkung zu Oktalzahlen ===
 
==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.) .
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==
=== Umrechnung ===
Viele Taschenrechner können die Zahlensysteme umrechnen, so auch der Windows-Taschenrechner oder der UNIX-Taschenrechner bc. Wie die Umrechnung mathematisch funktioniert, ist [http://www.tutorials.at/einfuehrung/03-zahlensysteme.html hier] beschrieben. Zur Umrechnung von Nachkommastellen siehe [https://www.studienservice.de/thema/dezimal-in-hexadezimal.71337/#post-1140103 hier].
Viele Taschenrechner können die Zahlensysteme umrechnen, so auch der Windows-Taschenrechner oder der UNIX-Taschenrechner bc. Wie die Umrechnung mathematisch funktioniert, ist [http://www.tutorials.at/einfuehrung/03-zahlensysteme.html hier] beschrieben. Zur Umrechnung von Nachkommastellen siehe [https://www.studienservice.de/thema/dezimal-in-hexadezimal.71337/#post-1140103 hier].
== Siehe auch ==
* Forenthread [https://www.mikrocontroller.net/topic/429490 Einführung des Hexadezimalsystems] und Website [https://sedimal.eu sedimal.eu] mit der Intention der Einführung des hexadezimalen Zahlensystems im Alltag


[[Kategorie:Algorithmen und Arithmetik]]
[[Kategorie:Algorithmen und Arithmetik]]

Aktuelle Version vom 23. Mai 2023, 13:52 Uhr

Ü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