Rechnen mit Bits & Bytes

Werbung
EF Informatik
Gymnasium Burgdorf
Nicolas Ruh
Rechnen mit Bits & Bytes
Addition auf Binär
Für das Addieren von Binärzahlen gibt es 4 Regeln, die eigentlich recht unspektakulär sind:
0
0
1
1
+
+
+
+
0
1
0
1
=
=
=
=
0
1
1
0, Übertrag 1
Beispiel:
+
0
0
1
0
0
0
Übertrag ->
Ergebnis->
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
1
0
0
1
1
Eigentlich funktioniert also auch das genau wir mit Dezimalzahlen. Probiere das aus und überprüfe
die Ergebnisse durch Umrechnung ins Dezimalsystem (Tabulatoren zwischen Ziffern):
Binär
+
1
0
0
0
0
0
0
1
Dezimal
1
1
0
1
1
0
0
1


Übertrag ->

Ergebnis->
+
1
0
1
0
0
1
0
0
1
0
1
0
1
1
1
1


Übertrag ->

Ergebnis->
+
1
0
1
0
1
0
1
0
0
1
0
1
0
1
1
1


Übertrag ->
Ergebnis->

Was im letzten Beispiel passiert ist, nennt sich „overflow“ (Überlauf). Schau dir die dezimale Version
an und formuliere allgemein:
1. Was ist ein overflow und unter welchen Umständen tritt dieses Phänomen auf?
2. Und binäre Festkommazahlen? Was ergibt 010.010002 + 01111.0002 (der Punkt zeigt an, wo der
fraktionale Teil beginnt)?
Quellen: Richard Jones, www.ib-Computing.com
Garmann, http://projekte.gymnasium-odenthal.de/
EF Informatik
Gymnasium Burgdorf
Nicolas Ruh
Hexadezimal addieren
Und jetzt dasselbe mit Hexadezimalzahlen:
(falls dir die Finger ausgehen: 0 1 2 3 4 5 6 7 8 9 A B C D E F)
Hexadezimal
+
0
0
0
0
0
0
Dezimal
C
D


Übertrag ->
Ergebnis->

+


1
6
4
8
3
Übertrag ->

Ergebnis->
+
F
0
F
3
9
9
0
D


Übertrag ->

Ergebnis->
3. Gibt es eine einfache Art, Hexadezimalzahlen (z.B. das letzte Ergebnis) in Binärzahlen
umzurechen (16 ist schliesslich 24)? Welche?
Subtrahieren
Was, wenn wir subtrahieren wollen? Ganz einfach: 127 – 16 entspricht schliesslich 127 + (-16). Man
muss also lediglich dafür sorgen, dass negative Zahlen repräsentiert werden können – das „most
significant bit“ steht also für den negativen Zahlenwert (bei einer 1 Byte signed Integer
repräsentiert also das erste der 8 Bit die -128). Für solche Repräsentationen wird aus der
Subtraktion also ganz einfach eine Addition. Ausprobieren:
Binär (signed Int)
Dezimal


+
1 2 7
-(1 6)
Übertrag ->

Ergebnis->
1
1
1
Möglicherweise muss man hierzu zuerst die positive Zahl ins Negative verkehren. Dazu gibt es eine
einfache Methode: man verwandelt jedes Bit der positiven Binärzahl in sein Gegenteil und addiert 1:
Das Einerkomplement:
Beispiel:
Das Zweierkomplement:
Das Einerkomplement einer Binärzahl entsteht, indem jedes einzelne Bit
„gekippt“ (to flip) wird, d. h. aus 0 wird 1 und aus 1 wird 0.
aus 0011 1001
entsteht das Einerkomplement
1100 0110
Das Zweierkomplement einer Binärzahl entsteht, indem zum
Einerkomplement der Binärzahl die Zahl 1 hinzuaddiert wird
Quellen: Richard Jones, www.ib-Computing.com
Garmann, http://projekte.gymnasium-odenthal.de/
EF Informatik
Gymnasium Burgdorf
Beispiel:
+
=
Nicolas Ruh
1100 0110
0000 0001
1100 0111
4. Überprüfe im Dezimalsystem, dass 1100 0111 wirklich der 0011 1001 mit umgekehrtem
Vorzeichen entspricht.
5. Schreibe 9610 binär (signed 8-Bit Integer) und ermittle daraus die binäre Form von -9610.
Punktrechnung im Binärsystem
Bis jetzt haben wir uns mit Strichrechnungen im Binärsystem beschäftigt und wir haben festgestellt,
dass Addition genauso funktioniert wie im Dezimalsystem (nur einfacher, da wir es lediglich mit
zwei möglichen Ziffern/Zuständen zu tun haben), und dass die Subtraktion im Prinzip nichts
anderes ist, als eine Addition vom Minuenden mit dem Zweierkomplement des Subtrahenden.
In der Grundschule lernt man, dass die Multiplikation eigentlich nichts anderes ist, als eine groooße
(mehrfache) Addition, und die Division nichts anderes ist, als eine grooooße Subtraktion. Wieder
können wir das Verfahren direkt übertragen - allerdings liegt im Binärsystem mehr der Schwerpunkt
auf dem Addieren als auf dem Multiplizieren, wie das folgende Beispiel zeigt:
Beispiel: das Produkt von 0000 10012 und 0010 01112 als vorzeichenlose (unsigned) Binärzahl
Dezimal
Übertrag ->
Ergebnis->
9 * 23
18_
27
_
_
1__
______
207
Binär
00001001 * 00010111
00001001____
00001001__
00001001_
00001001
11_____
___________________
0000000011001111
Bei der Multiplikation entstehen so bis zu acht Summanden, die anschließend aufaddiert werden
müssen – dafür ist die Addition aber sehr einfach. Das einzige Problem mit vielen Summanden ist
eigentlich, dass es zu Überträgen kommen kann, die grösser als 1 sind. Für Menschen ist dieses
Problem mit ein wenig Kopfrechnen zu lösen, der Computer löst es schlicht, indem er die ersten
beiden Summanden addiert, dann zum Ergebnis den dritten Summanden addiert, etc.
6. Berechne 710 * 2510 im Dezimal- und Binärsystem (am besten auf einem Blatt Papier)
Es ist wenig überraschend, dass man auf sehr ähnliche Weise auch die Division als eine Serie von
Subtraktionen ausdrücken kann (man rechnet jeweils mit dem verbleibenden Rest weiter), die sich
wiederum recht einfach in Additionen überführen lassen (s. oben). Die Details dieser
Rechenoperation wollen wir uns aber sparen.
Quellen: Richard Jones, www.ib-Computing.com
Garmann, http://projekte.gymnasium-odenthal.de/
Herunterladen