Zahlensysteme

Dossier: gfif_zahlensysteme_dossier.pdf

Lernziele

Erklärung negative Binärzahlen

Computer arbeiten immer mit fixen Bitlängen. Zum Beispiel sind moderne Computer 64-Bit Computer. Das heisst, sie rechnen intern immer mit Zahlen mit einer Länge von 64 Bit.In den 80er-Jahren hingegen war 8-Bit der Standard. Lass uns einen solchen betrachten:

Möchte ein solcher Computer die Dezimalzahl 42 speichern, so speichert er die Binärzahl 00101010. Beachte, dass die beiden Nullen links eigentlich unnötig sind, aber es müssen immer alle Bits gesetzt sein. Ein solcher Computer kann insgesamt 28=256 verschiedene Zahlen darstellen. Wenn man einen Computer hat, der nur mit positiven ganzen Zahlen rechnen soll, ist die kleinste Zahl 00000000=0 und die grösste 11111111=25510. Wenn man aber einen Computer haben möchte, der sowohl positive als auch negative Zahlen darstellen kann, müssen sich die positiven und negativen Zahlen die 256 möglichen Plätze teilen. Der Fairness halber macht es Sinn, dass die positiven und negativen Zahlen jeweils die Hälfte der möglichen Plätze erhalten.

Es wird dann so gemacht, dass positive Zahlen mit einer 0 links beginnen und negative Zahlen mit einer 1. Die Dezimalzahl +42 wäre dann also die Binärzahl 00101010. Doch welcher Dezimalzahl entspricht 10101010? Auf den ersten Blick mag es Sinn machen, zu denken, dass dies die Dezimalzahl 42 sei.

Beispiel binäre Subtraktion

Wir wollen berechnen 1101001 - 11101, wobei beide Zahlen als positive Zahlen aufzufassen sind. Bei der Subtraktion wird die erste Zahl Minuend, die Zweite Subtrahend genannt.

  1. Befülle mit 0, so dass beide gleich lang: 1101001 - 0011101
  2. Füge links ein zusäzliches Bit hinzu, damit wir auch negative Zahlen haben können: 01101001 - 00011101
  3. Finde 2er-Komplement von Subtrahend (Invertieren, +1): 11100011
  4. Addiere Minuend mit 2er-Komplement von Subtrahend: 01101001 + 11100011 = …
  5. Entferne Bit ganz links, da dieses nur für die Berechnung verwendet wurde: 1001100

Tipps: Code binäre Subtraktion

  1. Implementiere die Inversion (Umkehrung) einer Binärzahl, optimalerweise in einer eigenen Funktion.
  2. 2er-Komplement: Verwende dazu deinen Code/deine Funktion von 1. und addiere dann „1“ dazu. Dazu kannst du deine binary_add()-Funktion von früher verwenden.
  3. Addiere zum Minuend das 2er-Komplement des Subtrahends. Verwende dazu wieder die binary_add().

Binary to Decimal

Decimal to Binary

Binary Operations

  • gf_informatik/zahlensysteme.1685089394.txt.gz
  • Zuletzt geändert: 2023-05-26 08:23
  • von sca