{{tag>bf lf}} ====== Binärdarstellung, Oktal- und Hexadezimalschreibweise ====== ===== Natürliche Zahlen ℕ in Binärdarstellung ===== Ein digitaler Rechner kennt nur zwei logische Zustände: 0 und 1. Diese korrespondieren physikalisch mit zwei Spannungszuständen: Spannung an/Spannung aus. Außerdem können logische Aussagen einem von zwei "Werten" zugeordnet werden: wahr oder falsch. Aus all diesen Gründen spielt die Darstellung von Zahlen im Binärsystem eine zentrale Rolle in der Informatik. Du hast diese Darstellung von Zahlen im Binärsystem bereits in der Mittelstufe kennengelernt. Das Binärsystem ist ein **Stellenwertsystem**, dessen Stellenwerte Zweierpotenzen entspricht: | Stelle | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | Wertigkeit der Stelle | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | | Wertigkeit dezimal | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | **Beispiel:** 101001012 = 12810 + 3210 + 410 + 110 = 16510 ---- {{:aufgabe.png?nolink |}} === (A1) === * Welcher Zahlbereich lässt sich so mit 8 Bit darstellen? * Welcher Zahlbereich lässt sich so mit n Bit darstellen? * Rechne die Zahlen vom Binärsystem in das Dezimalsystem bzw. umgekehrt um: * 010110102 * 10010112 * 2710 * 22010 ++++ Lösungen | * Mit 8Bit lässt sich der positive Zahlenbereich von 0 bis 2⁸=255 darstellen. * Mit n Bit lässt sich stets der positive Zahlenbereich von 0 bin 2n darstellen. * Rechnungen: * 9010 * 7510 * 110112 * 110111002 Unter Linux gibt es einen Terminal basierten Taschenrechner ''bc'' mit dem man sein Ergebnisse einfach überprüfeen kann: * ''echo "ibase=2;obase=10; 10111" | bc'' wandelt ''10111'' ins 10er System um * ''echo "ibase=10;obase=2; 987" | bc''wandelt ''987'' ins 2er System um ++++ ==== Oktal- und Hexadezimalsystem ==== Das Oktalsystem ist ein Stellenwertsystem zur Basis 8, das Hexadezimalsystem ein Stellenwertsystem zur Basis 16 | **Oktalsystem** ||||||| | Stelle | 5 | 4 | 3 | 2 | 1 | 0 | | Wertigkeit der Stelle | 85 | 84 | 83 | 82 | 81 | 80 | | Wertigkeit dezimal | 32768 | 4096 | 512 | 64 | 8 | 1 | | **Hexadezimalsystem** | | | | | | | Stelle | 4 | 3 | 2 | 1 | 0 | | Wertigkeit der Stelle | 164 | 163 | 162 | 161 | 160 | | Wertigkeit dezimal | 65536 | 4096 | 256 | 16 | 1 | Bei Hexadezimalsystem muss die Menge der möglichen Ziffern erweitert werden, da der Wert an einer Stelle zwischen 0 und 15 betragen kann, die arabischen Ziffern jedoch nur Werte bis 9 bereitstellen. Man erweitert: | 10 | 11 | 12 | 13 | 14 | 15 | | A | B | C | D | E | F | ---- {{:aufgabe.png?nolink |}} === (A2) === * Welche Ziffern sind an den Stellen einer Oktalzahl erlaubt? * Welche Ziffern sind an den Stellen einer Hexadezimalzahl erlaubt? * Rechne um: * 2AE16 = ?? 10 * 123458 = ?? 10 * 317810 = ?? 16 * 276510 = ?? 8 ++++ Lösungen | * Oktalzahlen können Ziffern von 0-7 aufweisen * Hexadezimalzahlen können für jeder Stelle Stellenwerte von 0-15 aufweisen - das ergibt das Problem, dass man den "Ziffernraum" erweitern muss, man braucht gewissermaßen neue Ziffern, A-F für die Stellenwerte von 10-15. * Rechungen: * 68616 * 53498 * C6A16 * 53158 ++++ Oktal- und Hexadezimalsystem stellen eine "verkürzte" Binärdarstellung bereit, die es ermöglicht, binäre Zahlen schnell praktischer aufzuschreiben, ohne einen Umweg über das 10er System zu gehen: Die Ziffern von 0 bis 7 können binär in 3 Bit dargestellt werden. das heißt, jede Ziffer einer Oktalzahl entspricht 3 Bit - um von Oktal in Binär "umzuwandeln" muss man lediglich für jede oktale Ziffer 3 Bit aufschreiben und dort den Stellenwert binär eintragen: 34268 = 011 100 010 110 2 ---- {{:aufgabe.png?nolink |}} === (A3) === * Überprüfe die Richtigkeit der "Umwandlung" aus dem Beispiel im Text, indem du Oktal- und Binärzahl in eine Dezimalzahl umwandelst. * Mache dir klar, dass in diesem Sinne die Darstellung einer Zahl als Oktalzahl lediglich eine "verkürzte" Binärdarstellung ist. * Wandle um (schreibe anders): * 6754213458 = ?? 2 * 1011111100010102 = ?? 8 ---- {{:aufgabe.png?nolink |}} === (A4) === Ebenso wie Oktalzahlen "Binärzahlen in 3Bit-Blöcken" sind, sind Hexadezimalzahlen "Binärzahlen in 4Bit-Blöcken". * Erläutere am Beispiel der Zahl 1DA16 warum die Aussage richtig ist. * Wandle um: * A01216 = ?? 2 * 10111000101010001 2 = ?? 16 * Ein Rechner hat die MAC Adresse a4:4c:c8:4a:49:c5. welche Länge in Bit und Byte hat die MAC-Adresse? * IPv6 Adressen sind 128Bit lang. Wie viele hexadezimale Stellen umfasst eine IPv6 Adresse? * Könnte man IPv6 Adressen auch geschickt Oktal darstellen? Wenn ja, warum, wenn nein warum nicht. In Programmiersprachen, die in einem Texteditor programmiert werden, kann man die Tiefstellung um das Stellenwertsystem einer Ziffernfolge anzugeben meist nicht realisieren. Häufig werden Zahlen, in anderen System als dem 10er System darum mit einem Präfix markiert: * 0x - Hexadezimal: 0xAF5E * 0b - Binär: 0b101101 * 0o - Oktal: 0o75427 ==== Material ==== {{simplefilelist>.:*}}