Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m114:learningunits:lu01:binaereganzzahlen [2026/01/28 21:12] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m114:learningunits:lu01:binaereganzzahlen [2026/01/28 21:12] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU01i - Binär codierte Ganzahlen ====== | ||
| + | |||
| + | //Siehe [[http:// | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Auch wenn es oft geschrieben wird: Es gibt keine binären Zahlen; | ||
| + | Genauso wenig wie es dezimale Zahlen gibt. | ||
| + | Korrekt ausgedrückt handelt es sich um die binäre Darstellung oder binäre Codierung von Zahlen. | ||
| + | |||
| + | Und damit wünsche ich viel Erfolg und Spass mit den binären Zahlen in diesem Kapitel. LOL | ||
| + | </ | ||
| + | |||
| + | ===== Binär codierte Ganzzahlen ===== | ||
| + | Diese Codierung wird unter anderem für Variablen vom Typ '' | ||
| + | Die Zahlen werden einfach im binären Zahlensystem (siehe auch [[de: | ||
| + | Auf das Speichern und Verarbeiten von Brüchen wird bewusst verzichtet. Die binär codierten Ganzzahlen können nicht bloss positive Zahlen darstellen, sondern haben den Wertebereich der [[https:// | ||
| + | |||
| + | * Wenn das vorderste Bit '' | ||
| + | * Ist es '' | ||
| + | |||
| + | ==== Zahlenkreis statt Zahlenstrahl ==== | ||
| + | |||
| + | In der Mathematik stellen wir Zahlen häufig auf einem unendlichen Zahlenstrahl dar, der in beide Richtungen fortläuft. In der Informatik hingegen arbeiten wir mit einer festgelegten Anzahl von Bits zur Darstellung von Ganzzahlen. Dadurch ist der Wertebereich endlich und es entsteht kein linearer Zahlenstrahl, | ||
| + | |||
| + | Wenn beispielsweise ein 8-Bit-Datentyp wie '' | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | Dieses kreisförmige Modell erklärt, warum bei binär codierten Ganzzahlen herkömmliche Konzepte wie ein unendlicher Zahlenstrahl nicht mehr sinnvoll sind. Alle arithmetischen Operationen müssen den Wrap-around-Effekt berücksichtigen, | ||
| + | ==== Positive Zahlen ==== | ||
| + | Im Speicher sind alle Zahlen als binäre Codes abgelegt. | ||
| + | Um diesen binären Code als Dezimalzahl zu lesen, übertragen Sie den Wert einfach ins 10er System. | ||
| + | |||
| + | 0011 0010< | ||
| + | |||
| + | Wie das geht, erfahren Sie im Kapitel [[de: | ||
| + | |||
| + | ==== Negative Zahlen als Zweierkomplement ==== | ||
| + | //Siehe auch [[http:// | ||
| + | |||
| + | In der Informatik wird für negative binäre Ganzzahlen das Zweierkomplement verwendet. | ||
| + | Mit dieser Technik können Rechenoperationen ohne spezielle Regeln für positive und negative Zahlen eingesetzt werden. | ||
| + | Mehr dazu erfahren Sie im Kapitel [[de: | ||
| + | |||
| + | Für positive Zahlen: Im Zweierkomplement ist das höchstwertige Bit das Vorzeichenbit. Ist es 0, handelt es sich um eine positive Zahl, deren Wert sich direkt aus der normalen Binärdarstellung ergibt. | ||
| + | |||
| + | Für negative Zahlen gehen Sie wie folgt vor: | ||
| + | |||
| + | - Addieren Sie 1 zur Zahl: -13< | ||
| + | - Entfernen Sie das Vorzeichen der Zahl: -12< | ||
| + | - Übertragen Sie die Zahl ins Binärsystem: | ||
| + | - Invertieren Sie alle Bits: 0000 1100< | ||
| + | |||
| + | Negative Zahlen haben immer Bit ' | ||
| + | |||
| + | Um eine negative binäre Ganzzahl ins Dezimalsystem zu übertragen, | ||
| + | - Invertieren Sie alle Bits: 1111 0011< | ||
| + | - Übertragen Sie die Zahl ins Dezimalsystem: | ||
| + | - Fügen Sie das Vorzeichen hinzu: 12< | ||
| + | - Subtrahieren Sie 1 von der Zahl: -12< | ||
| + | |||
| + | === Umwandlung ins Zweierkomplement von Hand === | ||
| + | <WRAP center round tip 60%> | ||
| + | Trick zur schnelleren Umwandlung (einer negativen in eine positive Binärzahl oder umgekehrt) von Hand: Von rechts angefangen, alle Nullen und die erste Eins abschreiben und alle nachfolgenden Stellen invertieren. | ||
| + | </ | ||
| + | |||
| + | Dieser Programmablaufplan zeigt, wie Sie das Zweierkomplement einer binären Zahl ohne zu rechnen erhalten. | ||
| + | Dies stellt eine Alternative zum oben beschriebenen Vorgehen dar: | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | |||
| + | |||
| + | ===== Wrap around ===== | ||
| + | Mit Wrap around bezeichnen wir das Verhalten, wenn aus einer positiven Zahl plötzlich eine negative Zahl wird. | ||
| + | Am Besten lässt sich das Verhalten an einem Beispiel erläutern. | ||
| + | |||
| + | ==== Beispiel ==== | ||
| + | |||
| + | Für unser Java-Beispiel verwenden wir den Datentyp '' | ||
| + | In einer Endlosschleife ('' | ||
| + | <code java> | ||
| + | byte kleineZahl = 124; | ||
| + | while (true) { | ||
| + | kleineZahl = kleineZahl + 1; | ||
| + | System.out.println(kleineZahl); | ||
| + | } | ||
| + | </ | ||
| + | == Ausgabe == | ||
| + | < | ||
| + | 125 | ||
| + | 126 | ||
| + | 127 | ||
| + | -128 | ||
| + | -127 | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | Wieso ergibt 127 + 1 = -128? | ||
| + | Ein Blick in die binäre Codierung der Zahl lüftet das Geheimnis. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Addiert man zur Zahl 127< | ||
| + | Wie Sie gelernt haben, bedeutet die binäre Ziffer 1 an der ersten Stelle, dass es sich um eine negative Zahl handelt. | ||
| + | Wir erhalten also -128< | ||
| + | |||
| + | Im Gegensatz zur Mathematik haben wir also keinen Zahlenstrahl, | ||
| + | |||
| + | {{http:// | ||
| + | |||
| + | ---- | ||
| + | {{tag> | ||
| + | [[https:// | ||