WEBVTT

00:09.560 --> 00:14.920
Ich darf euch herzlich willkommen heißen zur ersten Übung dieses

00:14.920 --> 00:17.380
Semester in Digitaltechnik und Entwurfsverfahren.

00:18.900 --> 00:19.940
Was haben wir heute vor?

00:20.180 --> 00:24.180
Wir wollen uns noch mal die Zahlendarstellung im Rechner kurz

00:24.180 --> 00:24.640
anschauen.

00:24.760 --> 00:28.480
Ihr habt sie in der Vorlesung schon ausführlich gemacht.

00:28.640 --> 00:36.680
Das heißt, wir werden kurz drüber schauen, zumindest soweit, dass wir

00:36.680 --> 00:38.060
das alle nachvollziehen können.

00:39.980 --> 00:42.900
Dann schauen wir uns noch mal die Gleitkommazahlen an, im speziellen

00:42.900 --> 00:45.880
das IEEE-Format, und werden uns noch mal die Addition und

00:45.880 --> 00:47.960
Multiplikation von Gleitkommazahlen betrachten.

00:48.160 --> 00:49.620
Wir werden ein paar Aufgaben dazu rechnen.

00:51.100 --> 00:53.180
Und soweit wir dazu kommen, werden wir noch ein paar Aufgaben zum

00:53.180 --> 00:53.980
Hemmingcode rechnen.

00:57.700 --> 01:01.320
So, zunächst einmal Zahlendarstellung.

01:02.380 --> 01:05.300
Was für verschiedene Möglichkeiten, Zahlen darzustellen, haben wir,

01:05.700 --> 01:09.760
wenn wir uns jetzt überlegen, beispielsweise, was bedeutet denn eine

01:09.760 --> 01:10.840
1, 1, 1, 1?

01:11.160 --> 01:15.880
Dann gibt es verschiedene Möglichkeiten, was diese 5 Einsen bedeuten

01:15.880 --> 01:16.240
können.

01:17.600 --> 01:22.460
Zum einen können wir diese 5 Einsen als ganz normale Binärzahl

01:22.460 --> 01:23.160
interpretieren.

01:23.920 --> 01:30.620
Dann würden wir hier die Wertigkeiten haben von 16, 8, 4, 2 und 1,

01:30.680 --> 01:33.680
würden die aufsummieren und kommen dann auf die 31 im Dezimalsystem.

01:34.760 --> 01:40.020
Wir könnten diese 5 Einsen aber auch als Vorzeichenbetragzahl

01:40.020 --> 01:40.700
interpretieren.

01:40.840 --> 01:44.660
Das würde bedeuten, die erste Eins würde unser Vorzeichen

01:44.660 --> 01:49.340
repräsentieren, das wäre dann eine Minus, und die restlichen Einsen

01:49.340 --> 01:54.080
wären die binären Wertigkeiten der einzelnen Stellen, das heißt 8, 4,

01:54.280 --> 01:54.940
2 und 1.

01:55.060 --> 01:58.080
Dann kommen wir als Summe auf 15, das heißt, diese Zahl würde dann die

01:58.080 --> 01:59.260
Minus 15 repräsentieren.

01:59.720 --> 02:01.880
Wir können aber auch sagen, es ist eine Einer-Komplementzahl.

02:02.480 --> 02:05.680
Wenn wir es als Einer-Komplement interpretieren, haben wir als

02:05.680 --> 02:09.580
Resultat eine Plus-Minus-Null, weil im Einer-Komplement haben wir zwei

02:09.580 --> 02:10.440
Darstellungen der Null.

02:11.220 --> 02:13.800
Wir können sagen, es könnte eine Zweier-Komplementzahl sein.

02:14.600 --> 02:16.360
Also hierfür die Annotation nochmal kurz.

02:17.120 --> 02:19.960
Wenn ich rechts unten eine 2 habe, dann bin ich im Binärsystem.

02:20.560 --> 02:23.540
Wenn ich hier ein Vz habe, bin ich im Vorzeichenbetragssystem.

02:24.060 --> 02:28.740
Das Komma 5 sagt mir aus, dass ich eine 5-stellige Vz-Betragszahl

02:28.740 --> 02:30.560
interpretiere.

02:31.880 --> 02:36.260
1K ist das Einer-Komplement mit 5 Stellen, 2K das Zweier-Komplement

02:36.260 --> 02:37.000
mit 5 Stellen.

02:38.560 --> 02:42.420
Ich kann aber auch diese 5 Einsen als Zweier-Komplement mit 6 Stellen

02:42.420 --> 02:43.060
interpretieren.

02:43.380 --> 02:46.780
Dann würde aus meiner negativen Zahl, also Einer-Komplement plus Minus

02:46.780 --> 02:49.020
Null, Zweier-Komplement wäre die Minus 1.

02:49.840 --> 02:52.200
Wenn ich es aber als Zweier-Komplement nicht als 5 Stellen, sondern

02:52.200 --> 02:55.260
als 6-stellige Zweier-Komplementzahl interpretiere, dann komme ich auf

02:55.260 --> 02:55.920
die 31.

02:56.660 --> 02:59.920
Ich kann es aber auch ganz normal als Dezimalzahl interpretieren.

03:00.060 --> 03:03.280
In dem Fall wäre ich bei 11.111.

03:03.980 --> 03:07.540
Wenn ich es dann zusätzlich nochmal als Hexadezimalzahl interpretiere,

03:08.580 --> 03:13.780
habe ich hier die 0x1FF.

03:15.040 --> 03:20.380
Und wenn man das ausrechnet ins Dezimale, komme ich auf die 69.905.

03:21.060 --> 03:24.020
Also wir sehen, es ist wichtig, nicht nur Einsen und Nullen

03:24.020 --> 03:28.400
hinzuschreiben, sondern auch irgendwie zu vermerken, wie denn diese

03:28.400 --> 03:30.260
vielen Einsen und Nullen zu interpretieren sind.

03:31.160 --> 03:32.580
Das sind nur einige Beispiele.

03:32.700 --> 03:34.880
Natürlich gibt es beliebig viele weitere Beispiele, die man hier

03:34.880 --> 03:35.440
nennen könnte.

03:42.280 --> 03:43.120
Zweier-Komplementzahlen.

03:45.560 --> 03:46.900
Das ist der Teil der Wiederholung.

03:46.900 --> 03:48.060
Ich glaube, das kennt schon jeder.

03:49.520 --> 03:55.960
Sei die Zahl Z eine n-stellige Dualzahl mit den Stellen bn-1 bis b0,

03:56.380 --> 03:59.900
dann kann man das Zweier-Komplement einer n-stelligen negativen Zahl Z

03:59.900 --> 04:02.960
so bilden, dass man 2 auf n-Z berechnet.

04:04.020 --> 04:07.440
Das heißt, bei einer vorgegebenen Wortlänge von n, also ich weiß, ich

04:07.440 --> 04:12.260
habe n Stellen, kann ich die größte, kann ich ein Groß-N berechnen.

04:13.000 --> 04:15.900
Das sagt mir aus, wie viele Zahlen ich denn mit so vielen binären

04:15.900 --> 04:19.360
Stellen unterscheiden könnte.

04:19.680 --> 04:21.160
Das sind 2 auf n Zahlen.

04:22.740 --> 04:25.300
Und wenn ich jetzt ein positives Z habe...

04:26.200 --> 04:27.160
Also, das ist wichtig.

04:28.200 --> 04:30.820
Immer wenn wir vom Zweier-Komplement reden, dann haben Studenten sowas

04:30.820 --> 04:34.240
im Kopf wie Negation bilden und dann plus 1.

04:34.960 --> 04:37.460
Und wenn wir dann in der mündlichen Prüfung fragen, was ist das Zweier

04:37.460 --> 04:40.660
-Komplement von 5, dann machen die folgendes, die nehmen die 101,

04:41.680 --> 04:42.820
negieren sie, machen plus 1.

04:44.880 --> 04:47.540
Man kann auch positive Zahlen darstellen mit dem Zweier-Komplement.

04:48.080 --> 04:50.020
Funktioniert so, dass man einfach die Zahl hinschreibt.

04:50.500 --> 04:52.920
Also man muss nicht immer negieren und plus 1 machen.

04:53.560 --> 04:56.580
Wenn ich aber eine negative Zahl darstellen will, dann nehme ich das

04:56.580 --> 05:00.220
minus Z, in dem Fall meine 5 vielleicht, also minus 5.

05:00.920 --> 05:02.780
In diesem Kontext wäre dann Z gleich 5.

05:04.000 --> 05:06.820
Berechne mein Groß-N und ziehe von diesem Groß-N 5 ab.

05:07.360 --> 05:09.280
Damit habe ich dann die Darstellung meiner minus 5.

05:11.420 --> 05:19.400
So, wenn wir beim Beispiel bleiben mit minus 5, nochmal minus 5, will

05:19.400 --> 05:22.960
ich darstellen, ich berechne Groß-N minus Z.

05:24.220 --> 05:26.720
Z ist in diesem Fall gleich 5.

05:27.520 --> 05:33.840
Groß-N ist dadurch, dass ich 4 Stellen habe, 2 hoch 4, also 16.

05:35.120 --> 05:37.800
Minus 5, komme ich auf die 11.

05:39.340 --> 05:41.640
Die 11 schreibe ich jetzt in ganz normaler, gewohnter

05:41.640 --> 05:43.940
Darstellungsweise im Binären, also wenn ich nur die binären

05:43.940 --> 05:46.440
Wertigkeiten aufaddieren würde.

05:46.960 --> 05:51.080
Das ist einmal die 8, keine 4, eine 2 und eine 1.

05:52.100 --> 05:54.420
Also im Binären wäre das jetzt die 11.

05:55.200 --> 05:57.960
Interpretiert als Zweier-Komplement wäre das jetzt die minus 5.

05:57.960 --> 06:01.840
Deswegen schreibe ich auch nochmal hin, es ist das Zweier-Komplement

06:01.840 --> 06:03.360
und zwar 4-stellig.

06:05.860 --> 06:13.080
Diese andere Regel, die ihr sicherlich schon kennt, besagt mal minus

06:13.080 --> 06:20.900
1, plus 1, also einmal die Negation bilden und dann 1 aufaddieren.

06:21.320 --> 06:23.820
Das heißt, wenn ich bei der minus 5 bin, muss ich gucken, dass ich

06:23.820 --> 06:26.960
hier in den Spalten nicht durcheinander komme.

06:28.220 --> 06:32.240
Bei minus 5 habe ich 5 als positive Zahl, die ich ins Negative

06:32.240 --> 06:34.360
umwandeln will.

06:35.420 --> 06:38.180
Und dafür betrachte ich natürlich die 5 im Binären, das ist einmal die

06:38.180 --> 06:40.760
4 und einmal die 1, also 0101.

06:41.960 --> 06:45.320
Die Negation von 0101 ist die 1010.

06:46.720 --> 06:50.440
Und wenn ich jetzt nochmal plus 1 mache, komme ich auf die 1011.

06:52.900 --> 06:55.220
Also 1011, 1011.

06:56.000 --> 06:59.540
Ihr seht, beide Methoden führen zum gleichen Ziel.

07:00.380 --> 07:04.320
Ich würde euch jedoch tatsächlich bitten, im Kopf zu behalten, dass

07:04.320 --> 07:10.760
dieses minus 1 mal minus 1 plus 1, dass es nur für negative Zahlen

07:10.760 --> 07:11.040
gilt.

07:16.540 --> 07:19.740
Eine zweite Sache, die man beim Zweier-Komplement und negativen Zahlen

07:19.740 --> 07:22.640
oder der Darstellung von negativen Zahlen beachten muss, ist der

07:22.640 --> 07:23.280
Zahlenbereich.

07:24.520 --> 07:27.640
Das nennen wir zum Beispiel hier ein Beispiel, sei n gleich 4.

07:27.780 --> 07:33.280
Also wir arbeiten mit vier Binärstellen und wir suchen die Darstellung

07:33.280 --> 07:34.920
von minus 14 im Zweier-Komplement.

07:37.200 --> 07:42.120
Unsere normale Vorgehensweise ist die, dass wir sagen, wir haben N,

07:42.360 --> 07:45.320
das ist die Anzahl der darstellbaren Zahlen.

07:45.760 --> 07:47.740
Das ist 2 hoch 4, also 16.

07:51.920 --> 07:59.060
Für die minus 14 haben wir die Regel N minus Z, das heißt Z in diesem

07:59.060 --> 07:59.880
Fall ist die 14.

08:02.840 --> 08:05.240
Wir kommen hier also auf die Rechnung 16 minus 14.

08:06.860 --> 08:07.600
Hier kommen wir auf die 2.

08:08.160 --> 08:14.720
Die 2 im Binären ist die 0010 und ich interpretiere das jetzt als

08:14.720 --> 08:17.840
Zweier -Komplement mit vier Stellen und nach meiner Rechnung müsste

08:17.840 --> 08:19.120
das jetzt eigentlich die 14 sein.

08:21.040 --> 08:24.360
Spätestens hier sollten die Alarmglocken angehen und man sollte

08:24.360 --> 08:26.140
merken, leider stimmt doch irgendwas nicht.

08:27.740 --> 08:30.180
Woran merkt man, dass das jetzt keine minus 14 sein kann?

08:31.240 --> 08:32.200
Ja, jetzt ist Stille.

08:36.550 --> 08:38.210
Weil keine 1 da vorne steht.

08:38.350 --> 08:41.510
Eine 0 indiziert mir immer positive Zahlen.

08:42.870 --> 08:45.170
Das heißt, hier sehe ich schon, da ist irgendwas schiefgelaufen.

08:46.490 --> 08:47.650
Da ist auch was schiefgelaufen.

08:48.610 --> 08:50.970
Da ist ein Widerspruch, das kann so nicht sein.

08:51.910 --> 08:54.730
Wenn ich natürlich jetzt die Fehleranalyse machen will, kann ich hier

08:54.730 --> 08:56.970
nochmal schauen, was ist denn überhaupt mein darstellbarer

08:56.970 --> 08:57.550
Zahlenbereich?

08:57.790 --> 09:00.870
Woran liegt dieses Problem, also warum bekomme ich so etwas raus?

09:01.250 --> 09:05.970
Und ich weiß, dass ich mit vier Stellen im Zweier-Komplement den

09:05.970 --> 09:08.270
Zahlenbereich von minus 8 bis 7 abdecken kann.

09:09.230 --> 09:12.610
Natürlich ist 14 oder minus 14 in dem Fall außerhalb meines

09:12.610 --> 09:17.050
darstellbaren Zahlenbereiches und deswegen bekomme ich auch ein

09:17.050 --> 09:17.650
Problem hier.

09:18.310 --> 09:19.630
Wie kann ich das Problem jetzt lösen?

09:20.330 --> 09:20.770
Mehr Bits.

09:21.270 --> 09:22.230
Genau, ich nehme mehr Stellen.

09:24.290 --> 09:27.810
Offensichtlich reicht n gleich 4 nicht aus, also sage ich n gleich 5.

09:29.130 --> 09:33.890
Bei n gleich 5 berechne ich meine Anzahl darstellbarer Zahlen mit 2

09:33.890 --> 09:34.510
hoch 5.

09:35.190 --> 09:36.050
Ich bin bei 32.

09:36.050 --> 09:41.150
Wenn ich mir den Zahlenbereich überlege, den ich hier darstellen kann,

09:41.330 --> 09:43.950
geht er von minus 16 bis 15.

09:45.190 --> 09:48.790
Das heißt, hier sollte es funktionieren.

09:49.170 --> 09:50.750
Gleiche Vorgehensweise wie oben.

09:50.870 --> 09:53.830
Ich habe die minus 14, das heißt, mein z ist gleich 14.

09:55.170 --> 09:56.570
Ich habe n minus z.

09:58.230 --> 10:01.290
Also 32 diesmal minus 14.

10:01.670 --> 10:02.890
Ich komme auf die 18.

10:04.110 --> 10:07.150
Und die 18 ist die 16 plus 2.

10:07.670 --> 10:11.410
Also habe ich hier die 16, ich habe hier die 8, ich habe hier die 4,

10:11.570 --> 10:13.630
ich habe hier die 2 und ich habe hier die 1.

10:16.510 --> 10:21.130
Und ich kann jetzt sagen, Zweierkomplement und zwar 5-stellig.

10:21.970 --> 10:24.250
Der Unterschied zu vorher, ich habe hier eine führende 1.

10:24.390 --> 10:26.870
Das heißt, ich weiß, es handelt sich hier zumindest um eine negative

10:26.870 --> 10:27.270
Zahl.

10:28.910 --> 10:29.490
Okay?

10:31.210 --> 10:35.470
Also, bitte beachten, Zweierkomplement ist eine Darstellungsform für

10:35.470 --> 10:37.110
Zahlen, nicht nur für negative Zahlen.

10:37.730 --> 10:41.490
Dann überlegen wir uns, wie kann man Zweierkomplement-Zahlen addieren?

10:41.610 --> 10:43.290
Wieso benutzt man das Zweierkomplement?

10:46.570 --> 10:49.690
Zweierkomplement hat sich bewährt in Prozessoren, weil die Rechnung

10:49.690 --> 10:50.870
ein bisschen einfacher ist.

10:51.050 --> 10:54.110
Im Gegensatz zum Einerkomplement hat man hier keine duale Darstellung

10:54.110 --> 10:54.470
der 0.

10:54.470 --> 10:55.570
Das ist auch ein Vorteil.

10:57.010 --> 11:00.550
Für die Addition von Zweierkomplement-Zahlen unterscheiden wir drei

11:00.550 --> 11:00.830
Fälle.

11:02.690 --> 11:04.670
Der erste Fall wäre der offensichtliche.

11:04.810 --> 11:05.930
Beide Summanden sind positiv.

11:06.170 --> 11:08.490
Also ich addiere zwei positive Zahlen.

11:10.090 --> 11:12.550
Vorzeichenwitz beider Zahlen sind dann offensichtlich beide 0.

11:13.130 --> 11:15.150
Ergebnis sollte natürlich auch positiv sein.

11:15.270 --> 11:17.590
Ich kann hier keine zwei positiven Zahlen addieren und was Negatives

11:17.590 --> 11:18.230
rausbekommen.

11:18.750 --> 11:20.470
Das ist schwer vorstellbar.

11:21.390 --> 11:24.850
Eine Regel wäre, man könnte das Ergebnis überprüfen, ob das Ergebnis

11:24.850 --> 11:25.750
auch positiv ist.

11:25.930 --> 11:29.790
Das heißt, man würde das Vorzeichenwitz des Ergebnisses prüfen auf ist

11:29.790 --> 11:30.290
gleich 0.

11:32.630 --> 11:36.910
Wenn das der Fall ist, könnte man zumindest ahnen, dass das Ergebnis

11:36.910 --> 11:37.690
korrekt sein könnte.

11:41.850 --> 11:45.250
Eine andere Regel, die man hier verwenden kann, ist, dass die ersten

11:45.250 --> 11:47.670
beiden vordersten Überträge den gleichen Wert haben müssen.

11:47.670 --> 11:50.750
Wenn das nicht der Fall ist, dann hat man hier einen Überlauf und das

11:50.750 --> 11:51.910
Ergebnis ist dann falsch.

11:52.910 --> 11:54.810
Wir werden uns das gleich nochmal im Zahlenkreis anschauen.

11:56.410 --> 11:57.490
Hier der Zahlenkreis.

11:57.790 --> 11:59.530
So sieht er aus für vierstellige Zahlen.

12:00.730 --> 12:05.090
Wenn man jetzt die 0 als positive Zahl interpretieren würde, hat man

12:05.090 --> 12:08.790
genauso viele positive wie negative Zahlen.

12:09.230 --> 12:09.570
Bzw.

12:09.750 --> 12:14.290
man hat genauso viele positive plus 0 Zahlen wie negative Zahlen.

12:15.290 --> 12:16.610
Also ein symmetrischer Kreis.

12:21.050 --> 12:21.610
Genau.

12:22.370 --> 12:25.690
Addition würde bedeuten, ich erhöhe meine Zahl.

12:25.970 --> 12:27.210
Erhöhen geht nach rechts.

12:29.290 --> 12:32.030
Und Subtraktion würde bedeuten, ich wandere nach links.

12:32.470 --> 12:37.970
Also ich erniedrige die Zahl oder ich dekrementiere die Zahl um 1.

12:40.750 --> 12:41.730
Kleines Beispiel.

12:41.910 --> 12:44.990
Addieren zwei Zweikomplementzahlen, einmal die minus 4 und die plus 2.

12:45.930 --> 12:50.150
Ich sehe hier schon, das ist meine negative Zahl.

12:53.400 --> 12:55.680
Ich kann schauen, um welche negative Zahl es sich handelt.

12:55.780 --> 12:58.480
Das ist hier die 1100, also bin ich bei der minus 4.

12:59.140 --> 13:04.160
Und auf der anderen Seite habe ich meine plus 2, das ist die 0010.

13:06.180 --> 13:08.660
Was passiert, wenn ich diese zwei Zahlen addiere?

13:08.840 --> 13:09.840
Ich kann es binär machen.

13:10.840 --> 13:15.120
Dann habe ich hier die 0 plus 0 ergibt die 0.

13:15.240 --> 13:17.220
Ich habe die 0 plus 1 ergibt die 1.

13:17.360 --> 13:19.100
1 plus 0 ergibt die 1.

13:21.360 --> 13:24.620
Und ich habe jedes Mal einen Übertrag von 0.

13:25.200 --> 13:27.560
Also es gibt keine Überträge während der Addition von rechts nach

13:27.560 --> 13:27.820
links.

13:31.470 --> 13:35.010
Addiere ich die minus 2 mit der plus 4, sieht es ein bisschen anders

13:35.010 --> 13:35.390
aus.

13:35.870 --> 13:38.350
Ich habe hier die 0 plus 0 ergibt 0.

13:38.350 --> 13:40.370
1 plus 0 ergibt die 1.

13:40.510 --> 13:44.010
1 plus 1 ergibt 0, Übertrag 1.

13:46.350 --> 13:51.550
Und 1 plus 0 plus 1 ergibt wieder 0, Übertrag 1.

13:52.570 --> 13:56.450
Und man sieht hier, man hat hier zweimal Überträge.

13:56.850 --> 13:58.510
Und diese beiden Überträge sind gleich.

14:00.210 --> 14:03.410
Das Ergebnis, was ich hier betrachte, kürze ich auf 4 Bits.

14:03.410 --> 14:06.090
Das heißt, die fünfte Stelle streiche ich hier raus.

14:07.070 --> 14:08.310
Und habe dann die 0010.

14:08.910 --> 14:11.030
Ich betrachte die 0010, das ist die 2.

14:11.490 --> 14:14.910
Wenn ich hier nachrechne, im Dezimal habe ich plus 4 minus 2, bin ich

14:14.910 --> 14:15.510
auch bei 2.

14:15.790 --> 14:17.290
Das heißt, hier ist mein Ergebnis korrekt.

14:18.810 --> 14:23.010
Und unsere Regel von vorhin, dass die beiden vordersten Überträge

14:23.010 --> 14:25.510
gleich sein müssen, bezieht sich auf genau diese Überträge.

14:27.250 --> 14:28.930
Das ist eine Regel, die funktioniert halt.

14:30.550 --> 14:31.650
Kann man sich irgendwie herleiten.

14:31.650 --> 14:35.830
Das ist jetzt nicht das, was wir machen wollen, sondern für uns reicht

14:35.830 --> 14:36.910
es, es anzuwenden.

14:38.770 --> 14:42.490
Subtraktion, vielleicht hier nochmal, um es zu veranschaulichen.

14:43.170 --> 14:47.170
Wenn ich minus 4 plus 2 rechne, gibt es natürlich die Möglichkeit, ich

14:47.170 --> 14:51.130
kann hier bei 2 anfangen.

14:51.870 --> 14:54.970
Und kann 4 zurückgehen, aber ich möchte ja eine Addition zeigen.

14:55.090 --> 14:56.450
Also fange ich bei minus 4 an.

14:58.190 --> 15:02.530
Fange ich bei minus 4 an und wandere in meinem Zahlenstrahl 2 Stellen

15:02.530 --> 15:06.150
nach rechts und bin dann bei der minus 2.

15:07.550 --> 15:08.930
Also auch das, was hier rauskommt.

15:12.750 --> 15:17.910
Wenn ich hier bei minus 2 anfange, um 4 Stellen nach rechts zu

15:17.910 --> 15:22.470
wandern, lande ich auch hier auf der 2.

15:23.850 --> 15:26.970
Also so kann man den Zahlenstrahl interpretieren, wenn man Addition

15:26.970 --> 15:28.110
oder Subtraktion machen will.

15:28.570 --> 15:30.710
Addition nach rechts, Zahlen abziehen nach links.

15:33.150 --> 15:34.390
Nächstes Beispiel Subtraktion.

15:34.530 --> 15:36.090
Ich habe die 1, ich möchte 4 abziehen.

15:37.490 --> 15:40.690
Was ich hier durchführe, ist auch eine ganz normale Addition, also im

15:40.690 --> 15:41.070
Binären.

15:43.290 --> 15:46.770
Ich mache hier die 1 plus 0, komme ich auf die 1.

15:46.910 --> 15:48.290
0 plus 0, komme ich auf die 0.

15:48.450 --> 15:49.810
0 plus 1, komme ich auf die 1.

15:51.690 --> 15:54.210
Und das Ergebnis ist die 1, 1, 0, 1.

15:55.530 --> 15:58.170
1, 1, 0, 1 sehe ich hier, das ist die minus 3.

15:58.790 --> 16:02.270
Ich kontrolliere, ob meine Rechnung richtig ist, indem ich bei der

16:02.270 --> 16:07.250
minus 4 starte und 1 aufaddiere und lande dann bei der minus 3.

16:07.550 --> 16:12.690
Das heißt, ich kann es mir visuell bestätigen, dass tatsächlich das

16:12.690 --> 16:13.630
Ergebnis richtig ist.

16:15.410 --> 16:20.350
Dann sind wir bei minus 1 und minus 4, das heißt, von der minus 1

16:20.350 --> 16:23.110
ziehe ich die 4 ab oder ich addiere minus 1 und minus 4.

16:24.790 --> 16:27.710
Auch hier, ich brauche nur eine ganz normale Addition machen.

16:27.850 --> 16:32.310
Ich mache die 1 plus 0, kommt eine 1 raus, behalte 0, also Übertrag 0.

16:32.850 --> 16:35.750
1 plus 0 plus 0 gibt 1, Übertrag 0.

16:36.450 --> 16:38.730
1 plus 1 plus 0 gibt die 1, 0.

16:38.830 --> 16:41.490
Das heißt, ich schreibe die 0 hin, habe einen 1er-Übertrag.

16:42.110 --> 16:44.230
1 plus 1 plus 1 bin ich bei der 1, 1.

16:44.470 --> 16:47.030
Ich schreibe die 1 hin und habe einen 1er-Übertrag und den 1er

16:47.030 --> 16:47.990
-Übertrag schreibe ich dann unten.

16:49.270 --> 16:52.270
Auch hier, wir sehen, die ersten beiden vorderen Überträge sind

16:52.270 --> 16:52.670
gleich.

16:52.890 --> 16:53.830
Beides ist die 1.

16:56.030 --> 16:59.430
Bei meinem Ergebnis beschränke ich mich wieder auf meine Anzahl

16:59.430 --> 16:59.750
Stellen.

16:59.910 --> 17:04.950
Ich betrachte nur die ersten 4 Stellen von rechts, bin bei der 1, 0,

17:05.010 --> 17:05.610
1, 1.

17:06.250 --> 17:08.090
1, 0, 1, 1 ist meine minus 5.

17:08.730 --> 17:11.310
Wenn ich es mir im Zahlenstrahl verdeutliche, kann ich bei der minus 4

17:11.310 --> 17:13.530
anfangen und würde dann 1 abziehen.

17:13.530 --> 17:16.310
Und ich sehe dann, ich lande tatsächlich bei der minus 5.

17:17.190 --> 17:20.190
Auch hier, die Addition ist korrekt.

17:20.530 --> 17:25.530
Ich habe hier allerdings gemerkt, dass ich Überträge habe und muss

17:25.530 --> 17:27.150
aber diesen vorderen Übertrag immer streichen.

17:27.430 --> 17:28.590
Das ist der Unterschied zu der vorherigen.

17:30.110 --> 17:33.730
Zusammenfassend, im ersten Fall sind beide Summanden positiv.

17:34.350 --> 17:39.930
Wenn beide Summanden positiv sind, sind die Vorzeichen bis 0.

17:39.990 --> 17:41.770
Das Ergebnis muss natürlich auch positiv sein.

17:41.770 --> 17:45.450
Das heißt, das Vorzeichen bis das Ergebnis muss auch gleich 0 sein.

17:45.990 --> 17:49.330
Und wir können den Überlauf kontrollieren, indem wir die ersten beiden

17:49.330 --> 17:51.910
Überträge, die bei der Addition entstehen, kontrollieren.

17:52.010 --> 17:55.050
Wenn diese beiden Überträge gleich sind, haben wir ein korrektes

17:55.050 --> 17:55.310
Ergebnis.

17:55.470 --> 17:58.270
Wenn diese beiden Überträge unterschiedlich sind, haben wir ein

17:58.270 --> 18:01.290
Ergebnis mit Überlauf.

18:01.650 --> 18:04.030
Das heißt, wir sind im Zahlenstrahl gesprungen.

18:08.070 --> 18:13.950
Um das zu verdeutlichen, schauen wir uns ein Beispiel an.

18:14.450 --> 18:16.150
Angenommen, ich habe die 5 plus 2.

18:17.890 --> 18:22.010
Ich kann die 5 darstellen als 0101, die 2 darstellen als 0010.

18:22.810 --> 18:24.390
Ich habe hier eine ganz normale Addition.

18:24.550 --> 18:27.470
010 gibt 1, 010 gibt 1, behalte 0.

18:31.690 --> 18:33.950
010 gibt 1, behalte 0.

18:34.430 --> 18:36.830
100 gibt 1, behalte 0.

18:36.830 --> 18:38.650
000 gibt 0, behalte 0.

18:40.890 --> 18:43.130
5 plus 2 gibt 7, das ist offensichtlich.

18:43.450 --> 18:46.230
Ich weiß, ich bin hier in meinem Zahlenbereich drin, hier findet kein

18:46.230 --> 18:46.990
Overflow statt.

18:48.290 --> 18:51.150
Wir kontrollieren unsere Regelüberträge gleich, Ergebnis korrekt,

18:51.710 --> 18:52.510
trifft hier zu.

18:53.130 --> 18:56.090
Wenn ich 5 plus 6 rechne, bin ich bei 11.

18:56.230 --> 18:59.730
11 weiß ich, ist außerhalb meines darstellbaren Zahlenbereiches.

19:00.310 --> 19:02.910
Und wir machen uns jetzt deutlich, warum hier die zwei Überträge

19:02.910 --> 19:03.370
entstehen.

19:03.370 --> 19:06.810
1 plus 0 gibt 1, 0 plus 1 gibt 1.

19:07.010 --> 19:11.250
1 plus 1 gibt 0, behalte 1, also Übertrag 1.

19:11.930 --> 19:15.410
Und dieser Übertrag addiert sich dann hier zu einer 1, erzeugt aber

19:15.410 --> 19:16.410
keinen neuen Übertrag.

19:17.230 --> 19:20.870
Hier sehe ich, bei meiner falschen Addition sind ungleiche Überläufe

19:20.870 --> 19:21.250
entstanden.

19:21.370 --> 19:23.640
Und das Ergebnis ist dadurch als falsch zu kennzeichnen.

19:24.370 --> 19:29.390
Und ich weiß, dieses Ergebnis hat ein Overflow oder ein Underflow

19:29.390 --> 19:30.130
erzeugt.

19:30.190 --> 19:32.670
Und daher ist das Ergebnis nicht zu verwenden.

19:33.790 --> 19:37.850
Die zweite Regel oder der zweite Fall bei der Addition von

19:37.850 --> 19:42.970
Zweierkomplementzahlen trifft zu, wenn beide Summanden negativ sind.

19:43.810 --> 19:45.870
Im Grunde das komplementäre Problem.

19:46.450 --> 19:48.650
Ich habe ein Vorzeichenbit, das muss eine 1 sein.

19:48.750 --> 19:51.270
Das Ergebnis muss natürlich auch negativ sein.

19:51.690 --> 19:54.830
Das heißt, das Vorzeichenbit des Ergebnisses muss 1 sein.

19:55.290 --> 19:56.630
Auch hier kann ich die gleiche Regel anwenden.

19:56.730 --> 19:59.530
Wenn die beiden vordersten Überträge den gleichen Wert haben, dann ist

19:59.530 --> 20:00.390
das Ergebnis korrekt.

20:00.670 --> 20:03.130
Wenn sie unterschiedliche Werte haben, ist es falsch.

20:03.750 --> 20:05.990
Dafür addiere ich die Minus 5 und die Minus 2.

20:07.790 --> 20:09.070
Ich komme auf die Minus 7.

20:09.730 --> 20:12.190
Ich sehe, dass meine zwei vordersten Überträge 1 sind.

20:12.390 --> 20:15.070
Das Ergebnis ist dadurch als korrekt zu kennzeichnen.

20:16.630 --> 20:19.030
Ich kann das gleiche machen mit der Minus 5 und der Minus 6.

20:19.130 --> 20:21.850
Hier weiß ich, da ich nur bis Minus 8 darstellen kann, dass ich hier

20:21.850 --> 20:23.190
außerhalb meines Zahlenbereichs bin.

20:24.690 --> 20:26.930
Und hier kann man auch nachvollziehen, dass die Überträge

20:26.930 --> 20:27.790
unterschiedlich sind.

20:27.790 --> 20:31.830
Man kann es nachrechnen und weiß dann, dass das Ergebnis falsch ist.

20:31.950 --> 20:36.110
Hier ist ein Überlauf eingetreten und das kann man dann leicht hier

20:36.110 --> 20:36.570
detektieren.

20:38.110 --> 20:39.130
Der dritte Fall.

20:40.210 --> 20:42.090
Beide Zahlen haben unterschiedliche Vorzeichen.

20:42.210 --> 20:44.730
Das heißt, ich addiere eine negative und eine positive Zahl.

20:46.050 --> 20:49.010
Dieser Fall ist ein bisschen einfacher oder für uns ein günstigerer

20:49.010 --> 20:52.450
Fall, weil das Ergebnis auf jeden Fall korrekt ist.

20:52.810 --> 20:55.610
Wenn ich eine positive und negative Zahl addiere, kann ich nicht

20:55.610 --> 20:57.810
außerhalb meines Zahlenbereichs, außerhalb meines darstellbaren

20:57.810 --> 20:58.810
Zahlenbereichs landen.

21:00.650 --> 21:03.990
Das Einzige, was man hier betrachten muss, ist natürlich, wenn meine

21:03.990 --> 21:07.230
negative Zahl größer ist, ist mein Ergebnis natürlich negativ, also

21:07.230 --> 21:08.590
betragsmäßig größer ist.

21:08.870 --> 21:11.850
Wenn meine positive Zahl betragsmäßig größer ist als die negative

21:11.850 --> 21:14.610
Zahl, dann bekomme ich eine positive Zahl raus.

21:16.030 --> 21:18.510
Auch hier, wenn ein Übertrag entsteht an der vordersten Stelle, also

21:18.510 --> 21:21.170
außerhalb meines Darstellungsbereiches, wird dieser einfach

21:21.170 --> 21:21.690
gestrichen.

21:23.450 --> 21:26.270
Hier ein kleines Beispiel, ich addiere die 5 und die minus 6.

21:28.430 --> 21:31.550
Hier sind die Überträge gleich, das Ergebnis ist korrekt.

21:32.710 --> 21:35.170
Auch hier sind die Überträge gleich, das Ergebnis ist korrekt.

21:37.190 --> 21:42.210
Wobei es hier tatsächlich keinen Einfluss drauf hat, auch wenn hier

21:42.210 --> 21:45.490
unterschiedliche Überträge entstehen würden, müsste das Ergebnis ja

21:45.490 --> 21:45.930
korrekt sein.

21:46.190 --> 21:47.870
Allerdings glaube ich, das kann gar nicht eintreten.

21:50.630 --> 21:52.290
Überlauferkennung, also ein wichtiges Thema.

21:52.450 --> 21:54.790
Ich muss erkennen können, wenn ich zwei Zweierkomplementzahlen

21:54.790 --> 21:57.590
addiere, habe ich einen Überlauf oder nicht.

22:00.130 --> 22:03.110
Um jetzt die Regel anzuwenden, die wir jetzt vorgestellt haben, also

22:03.110 --> 22:07.830
die korrekte Addition bei beiden Überträgen, bei gleichen Überträgen

22:07.830 --> 22:14.290
oder eine Überlauferkennung bei unterschiedlichen Überträgen, benutzt

22:14.290 --> 22:15.490
man ein Antivalenzgatter.

22:15.490 --> 22:17.650
Wer weiß, was Antivalenz bedeutet?

22:18.470 --> 22:19.310
Wer weiß es nicht?

22:20.290 --> 22:20.490
Ehrlich?

22:24.070 --> 22:25.450
Antivalenz, ist nicht schwer.

22:25.930 --> 22:30.150
Schaltbild Antivalenz ist gleich 1 mit einem Kästchen.

22:30.750 --> 22:36.550
Ich habe zwei Eingänge, nennen wir den einen mal Übertrag N und den

22:36.550 --> 22:40.550
anderen Übertrag N plus 1 und meinen Ausgang nenne ich A.

22:42.590 --> 22:43.090
Klassenfragen?

22:45.450 --> 22:47.830
Weil es das Gegenteil von Äquivalenz ist.

22:48.210 --> 22:49.410
Antivalenz, wahrscheinlich deswegen.

22:50.510 --> 22:52.430
Aber es ist das Gleiche, es ist Exklusivoder.

22:56.370 --> 22:59.810
Also, wie der Kommilitone schon gesagt hat, es handelt sich hier um

22:59.810 --> 23:01.970
ein XOR oder Exklusivoder.

23:02.970 --> 23:07.390
Exklusivoder bedeutet, ein Eingang ist 1 oder der andere ist 1, aber

23:07.390 --> 23:08.270
nicht beide gleichzeitig.

23:08.270 --> 23:10.890
Also, exklusives Oder.

23:11.530 --> 23:14.790
Im Vergleich zum richtigen Oder ist mir egal, wenn beide Eingänge 1

23:14.790 --> 23:15.930
sind, werte ich es als 1.

23:16.370 --> 23:18.070
Beim Exklusivoder ist mir das nicht egal.

23:18.690 --> 23:23.610
Mache ich hier mein kleines Schaltbild, meine Schaltfunktion.

23:25.850 --> 23:27.310
Das kennt ihr, glaube ich, schon.

23:27.510 --> 23:29.050
Wenn nicht, kommt es in den nächsten Vorlesungen.

23:29.970 --> 23:32.170
Dann habe ich hier alle möglichen Kombinationen von Eingängen.

23:32.330 --> 23:34.550
Auf der linken Seite, auf der rechten Seite habe ich das Ergebnis

23:34.550 --> 23:35.270
meiner Operation.

23:35.710 --> 23:37.890
Bei 0, 0 Eingängen bekomme ich eine 0.

23:38.110 --> 23:42.890
Bei 0, 1 ist meine Antivalenz erfüllt.

23:44.030 --> 23:46.330
Man kann es auch so interpretieren, beide Eingänge sind

23:46.330 --> 23:46.990
unterschiedlich.

23:47.450 --> 23:49.230
Also, es gibt mehrere Möglichkeiten, das zu interpretieren.

23:50.130 --> 23:52.310
Ich kann sagen, ich bekomme eine 1 raus, wenn beide Eingänge

23:52.310 --> 23:53.150
unterschiedlich sind.

23:53.270 --> 23:55.910
Deswegen Antivalenz, also 0, 1 oder 1, 0.

23:56.390 --> 23:58.390
Bei 1, 1 sind sie wieder identisch, also eine 0.

23:58.910 --> 24:01.050
Oder ich kann sagen, es ist ein Exklusivoder.

24:01.190 --> 24:04.390
Das heißt, entweder ein Eingang ist auf 1 geschaltet oder der andere

24:04.390 --> 24:05.550
nicht, aber beide gleichzeitig.

24:07.010 --> 24:11.630
Formell nochmal hingeschrieben kann ich sagen, A ist gleich 1, wenn

24:11.630 --> 24:17.770
Übertrag N plus 1 ungleich Übertrag N sind.

24:18.330 --> 24:24.110
Ich kann sagen, A ist gleich 0, wenn Übertrag N plus 1 gleich Übertrag

24:24.110 --> 24:24.790
N sind.

24:26.070 --> 24:27.350
Also, daher Antivalenz.

24:28.090 --> 24:29.830
Als Gegenteil von Äquivalenz.

24:29.830 --> 24:33.110
Das ist eine einfache Möglichkeit, den Überlauf zu erkennen.

24:33.570 --> 24:36.350
Lässt sich schalltechnisch sehr einfach realisieren.

24:36.450 --> 24:37.910
Das ist nur ein Bauteil, wie man hier sieht.

24:38.390 --> 24:44.370
Man kann dann sofort im Prozessor bestimmte Status-Bits setzen, lernt

24:44.370 --> 24:46.810
ihn dann in der Rechnerorganisation kennen, die einem dann

24:46.810 --> 24:49.570
symbolisieren, dass hier ein Überlauf stattgefunden hat.

24:52.350 --> 24:54.230
So, IEEE Floating Point.

24:56.470 --> 24:59.050
Ich gehe ein bisschen schneller durch, falls ihr das noch nicht kennt.

24:59.290 --> 25:00.690
Aber ihr solltet das eigentlich kennen, weil die ganzen

25:00.690 --> 25:02.050
Vorlesungsvorlesungen sind voll davon.

25:03.410 --> 25:04.530
Ihr dürft mich gerne unterbrechen.

25:06.250 --> 25:08.790
Wir haben zwei verschiedene, beziehungsweise wir haben ein IEEE

25:08.790 --> 25:13.930
Floating Point Fließkomma-Format vorgestellt in der Vorlesung.

25:14.150 --> 25:17.410
Allerdings einmal mit 32-Bit und einmal als 64-Bit-Genauigkeit.

25:18.310 --> 25:21.430
Wir haben hier festgelegt, wie die Codierung aussieht.

25:21.710 --> 25:24.870
Mein erstes Bit ist immer mein Vorzeichen, danach folgt ein 8-Bit für

25:24.870 --> 25:28.110
die Charakteristik und dann 23-Bit für die Mantisse, wobei die

25:28.110 --> 25:31.530
Charakteristik ausschlaggebend ist für den Exponenten als

25:31.530 --> 25:34.270
Zweierexponent in der Darstellung meiner Zahl.

25:35.310 --> 25:38.130
Interessant ist tatsächlich hier, wenn ich wechsle auf das 64-Bit

25:38.130 --> 25:41.970
-Datenformat, also wenn ich genauere Zahlen haben will, da dopple ich

25:41.970 --> 25:45.430
nicht nur einfach die verschiedenen Felder, also ich nehme nicht

25:45.430 --> 25:47.770
einfach das Charakteristikfeld, was hier 8-Bit breit ist und mache

25:47.770 --> 25:51.490
dann 16-Bit raus, sondern man erhöht hier nur von 8-Bit auf 11-Bit.

25:52.230 --> 25:54.470
Dafür erhöht man dann die Mantisse umso stärker.

25:54.770 --> 26:00.490
Also statt zweimal 23, also 46, hat man dann hier 52-Bit in der

26:00.490 --> 26:00.830
Mantisse.

26:01.830 --> 26:02.810
Der Grund ist ganz einfach.

26:02.910 --> 26:06.470
Die Genauigkeit der Zahl wird ja bestimmt durch die Mantisse und nicht

26:06.470 --> 26:07.510
durch die Charakteristik.

26:07.830 --> 26:11.070
Die Größe des Zahlenbereiches, den ich darstellen kann, der ist

26:11.070 --> 26:15.230
tatsächlich ausschlaggebend für die Größe meiner Charakteristik oder

26:15.230 --> 26:16.030
meines Exponenten.

26:17.330 --> 26:22.430
Wir haben also zur Erklärung dieser Tabelle einmal haben wir das 32

26:22.430 --> 26:25.570
-Bit -Datenformat, das ist die linke Spalte hier in schwarz und einmal

26:25.570 --> 26:28.230
haben wir das 64-Bit-Datenformat, das sind hier die roten Felder in

26:28.230 --> 26:29.190
Klammern.

26:29.770 --> 26:32.250
Wir haben hier einmal Fragen.

26:34.910 --> 26:37.690
Wir reden hier einmal von den normalisierten Zahlen, das ist dieser

26:37.690 --> 26:39.270
grüne Kasten.

26:40.390 --> 26:42.670
Und bei den normalisierten Zahlen wird immer vor die Mantisse ein

26:42.670 --> 26:43.730
impliziter 1 gesetzt.

26:44.650 --> 26:49.550
Also ich nehme das, was in meinem Mantissenfeld steht, setze ein 1

26:49.550 --> 26:52.590
Komma davor und schreibe danach meine Binärstellen einfach hin.

26:53.810 --> 26:56.950
Bei den denormalisierten Zahlen setze ich das nicht voraus, ich habe

26:56.950 --> 27:00.030
hier zumindest im Bereich der Charakteristik gleich 0, habe ich hier

27:00.030 --> 27:01.810
eine 0 vorne und danach kommt die Mantisse.

27:03.450 --> 27:04.670
Das ist der untere Bereich.

27:05.110 --> 27:09.310
Im oberen Bereich der nicht normalisierten Zahlen möchte ich keine

27:09.310 --> 27:11.810
Zahlen mehr darstellen, sondern ich möchte Ausnahmen darstellen.

27:11.930 --> 27:16.570
Zum Beispiel, wenn ich einen Overflow festgestellt habe, möchte ich

27:16.570 --> 27:19.850
den hier darstellen können.

27:21.590 --> 27:24.930
Daher verwendet man hier den Trick, dass man sagt, man verwendet nicht

27:24.930 --> 27:29.930
alle 256 Charakteristiken, also alle möglichen 2 hoch 8 Kombinationen,

27:30.190 --> 27:34.330
sondern man verwendet nur 2 hoch 8 minus 2 Kombinationen.

27:34.890 --> 27:38.290
Man behält sich die 0 und die 255 vor für Spezialfälle.

27:39.070 --> 27:42.450
Der Spezialfall 0 bedeutet, ich habe ganz kleine Zahlen, mit denen ich

27:42.450 --> 27:45.170
rechnen will, also nicht normalisierte Zahlen.

27:46.250 --> 27:49.150
Oder für diesen Bereich reden wir von denormalisierten Zahlen.

27:49.970 --> 27:53.530
Und ich habe die 255, mit der ich hier Ausnahmen darstellen können

27:53.530 --> 27:59.590
möchte, mit Overflow bzw.

28:00.030 --> 28:00.810
Not a Number.

28:03.250 --> 28:06.950
Jetzt gibt es verschiedene Möglichkeiten, was wir hier beachten

28:06.950 --> 28:07.290
müssen.

28:07.790 --> 28:11.810
Einmal, was ist denn die kleinste darstellbare Zahl in unserem Format?

28:12.250 --> 28:15.110
Dafür betrachten wir den kleinsten Exponenten, den wir hier benutzen

28:15.110 --> 28:15.430
können.

28:15.850 --> 28:19.490
Das ist die minus 126, falls ihr die Formel nicht mehr im Kopf habt.

28:19.570 --> 28:22.690
Wir haben die Umrechnung von Charakteristik zu Exponent.

28:23.010 --> 28:26.790
Das sieht so aus, dass ich immer 127 zum Exponenten hinzuaddieren

28:26.790 --> 28:29.470
kann, um auf die Charakteristik zu kommen, oder 127 von der

28:29.470 --> 28:32.090
Charakteristik abziehen muss, um den Exponenten zu berechnen.

28:33.170 --> 28:36.030
In diesem Fall habe ich einen gegebenen Exponenten, das heißt ich habe

28:36.030 --> 28:42.130
die minus 126 und addiere die minus 126 zu 127 auf und bekomme hier

28:42.130 --> 28:43.270
die Charakteristik 1.

28:43.970 --> 28:47.090
Wenn ich das binär darstelle, habe ich auf der linken Seite Vorzeichen

28:47.090 --> 28:54.750
0 für eine positive Zahl und 00001 für diese 1 als Charakteristik.

28:55.930 --> 29:00.290
Und die kleinste Zahl, die ich jetzt hier darstellen könnte, wäre ja,

29:00.370 --> 29:02.190
wenn ich die Mantisse einfach mit Nullen fülle.

29:03.570 --> 29:06.530
Also, ich fülle viele, viele Nullen ein.

29:07.070 --> 29:09.410
Ich bin in meinem normalisierten Zahlenbereich, das heißt ich habe

29:09.410 --> 29:10.710
eine implizite 1 vorne.

29:11.270 --> 29:16.970
Ich interpretiere dann diese Zahl als 1,000000 mal irgendein

29:16.970 --> 29:18.090
Exponenten.

29:18.650 --> 29:20.470
Und diese Zahl nennen wir MinReal.

29:21.190 --> 29:24.250
Diese Zahl ist sehr wichtig, zumindest wenn man sich mit Algebra

29:24.250 --> 29:27.050
beschäftigt oder wenn man Prozessoren designen muss, muss man auf

29:27.050 --> 29:30.530
diese Zahl ein Auge werfen.

29:31.230 --> 29:35.450
Was wäre die nächste größere Zahl, die ich darstellen kann im

29:35.450 --> 29:36.510
normalisierten Bereich?

29:37.110 --> 29:39.670
Dafür habe ich den gleichen Exponenten oder meine gleiche

29:39.670 --> 29:43.470
Charakteristik, das gleiche Vorzeichen, setze aber in meiner Mantisse

29:43.470 --> 29:45.730
ganz hinten addiere ich nochmal ein 1 auf.

29:47.130 --> 29:51.930
Wenn ich das interpretiere hier, die obere Zahl ist die 1,00002er

29:51.930 --> 29:55.850
Potenz mal 2 hoch minus 126, das war der Exponent, den wir hier

29:55.850 --> 29:56.650
vorgegeben haben.

29:57.330 --> 30:02.870
Die nächste größere Zahl ist quasi 1,00001 mal 2 hoch minus 126, das

30:02.870 --> 30:07.910
entspricht 1 plus 2 hoch minus 23, weil wir hier 24 Stellen haben,

30:07.990 --> 30:09.470
weil wir hier 23 Stellen haben.

30:10.590 --> 30:11.710
Ist das die 23.

30:11.950 --> 30:15.070
Stelle, also 2 hoch minus 1, 2 hoch minus 2 und so weiter bis 2 hoch

30:15.070 --> 30:15.650
minus 23.

30:16.710 --> 30:21.930
Das ist meine implizite 1, also 1 plus 2 hoch minus 23 mal 2 hoch

30:21.930 --> 30:23.650
minus 126.

30:23.950 --> 30:27.310
Das ist die nächste Zahl nach der MinReal, die ich darstellen kann.

30:28.450 --> 30:32.050
Die zweite Zahl, die danach kommt, ist auch hier einfach nur die

30:32.050 --> 30:33.310
Erhöhung der Mantisse um 1.

30:33.510 --> 30:36.870
Das heißt, ich addiere hier eine 1, komme auf die 1,0, habe dann die

30:36.870 --> 30:40.390
nächstgrößere Zahl, was die 2 hoch minus 22 ist, also 1 plus 2 hoch

30:40.390 --> 30:44.330
minus 22 mal 2 hoch minus 126.

30:45.350 --> 30:49.010
So kann ich jetzt weitergehen, man zählt hier sukzessive auf und kommt

30:49.010 --> 30:49.610
dann auf

30:53.810 --> 31:03.530
insgesamt 2 hoch 23 Zahlen für eine Mantisse und ein Vorzeichen.

31:06.050 --> 31:08.130
Das war jetzt die Charakteristik 1.

31:09.150 --> 31:13.310
Hätte ich jetzt die Charakteristik 2, habe ich ein Exponenten von

31:13.310 --> 31:13.990
minus 125.

31:15.430 --> 31:20.870
Auch hier das gleiche Schema, bei gegebener Charakteristik ist die

31:20.870 --> 31:23.990
kleinste Zahl, die ich dann darstellen kann, ganz viele Nullen hier

31:23.990 --> 31:24.610
einzufügen.

31:25.490 --> 31:29.890
Daraus resultiert dann meine Zahl, das ist die 1,000 mal 2 hoch minus

31:29.890 --> 31:32.910
125 diesmal, also gegeben auch durch den Exponenten.

31:33.390 --> 31:36.610
Wenn ich hier hochzähle,

31:40.690 --> 31:45.230
kann ich natürlich hochgehen bis 1,1,1, 1,1,1,1 und so weiter.

31:47.970 --> 31:52.230
Auch hier die Anzahl der Zahlen, die ich darstellen kann, 2 hoch 23

31:56.310 --> 32:00.350
bei gegebener Charakteristik und bei gegebenen Vorzeichen.

32:01.190 --> 32:04.910
Insgesamt 2 hoch 23 Zahlen mit diesem Vorzeichen und dieser

32:04.910 --> 32:05.630
Charakteristik.

32:07.430 --> 32:09.390
Dann geht es weiter mit Charakteristik 3.

32:12.370 --> 32:12.890
Nein, geht es nicht.

32:15.370 --> 32:16.850
Der Rest ist natürlich klar.

32:17.090 --> 32:19.310
Ich kann hier durchzählen bis Charakteristik 127.

32:21.670 --> 32:24.550
Habe hier wieder das gleiche, ich fülle auf mit Nullen, kann dann hier

32:24.550 --> 32:26.090
wieder um 1 erhöhen und so weiter.

32:26.550 --> 32:30.090
Habe dann wieder insgesamt 2 hoch 23 Zahlen.

32:31.050 --> 32:35.870
Natürlich bei gegebener Charakteristik und bei gegebenen Vorzeichen.

32:41.890 --> 32:43.170
Das war jetzt 127.

32:44.130 --> 32:49.770
Ein Spezialfall mit Exponent 127 ist die diese Zahl.

32:52.750 --> 32:57.190
Also Exponent 127 ist meine Charakteristik 254, das ist der größte

32:57.190 --> 33:00.510
Exponent oder die größte Charakteristik, die ich erlaube in meinem

33:00.510 --> 33:01.710
normalisierten Zahlenbereich.

33:03.310 --> 33:05.450
Wenn ich hier mit Einsen auffülle, habe ich hier die größte

33:05.450 --> 33:06.290
darstellbare Zahl.

33:07.850 --> 33:12.250
Also die größte darstellbare normalisierte Zahl kann ich dann

33:12.250 --> 33:14.510
erzeugen, indem ich hier die Mantisse mit Einsen auffülle.

33:14.510 --> 33:18.730
Das bedeutet, ich habe hier die implizite 1 plus 2 hoch minus 1 2 hoch

33:18.730 --> 33:24.570
minus 2, 2 hoch minus 3 bis 2 hoch minus 23 mal 2 hoch Exponent, hier

33:24.570 --> 33:29.010
steht er 127, mal 2 hoch 127.

33:29.010 --> 33:32.310
Wenn man das Ganze jetzt ein bisschen zusammenfasst, kann man

33:36.210 --> 33:42.170
diese Zahlen darstellen als 1 minus 2 hoch minus 23, das ist genau

33:42.170 --> 33:42.670
dasselbe.

33:44.310 --> 33:53.270
Ich kann dann hier nochmal zusammenfassen 1 plus 1 gibt dann 2 2 mal

33:56.810 --> 34:05.210
1 plus 1 ist 2, 2 minus 2 hoch minus 23 und dann habe ich hier 2 mal 2

34:05.210 --> 34:16.750
hoch 127 ist die 2 hoch 128 2 mal 2 hoch 127 ist die 2 hoch 128 und

34:16.750 --> 34:24.190
ich multipliziere das einfach nur aus minus 2 mal 2 hoch minus 23 kann

34:24.190 --> 34:30.070
ich dann hier drauf addieren, komme ich dann auf die 2 hoch 104.

34:31.110 --> 34:34.690
Und diese Zahl nennen wir MaxReal, das heißt, das ist die größte

34:34.690 --> 34:36.210
darstellbare normalisierte Zahl.

34:37.510 --> 34:41.270
Dann gibt es noch verschiedene Probleme, wie stelle ich zum Beispiel

34:41.270 --> 34:44.770
die Null dar, wenn ich eine implizite 1 habe, kann ich keine Null

34:44.770 --> 34:46.770
darstellen, weil immer eine 1 vorne steht.

34:47.770 --> 34:51.450
Das heißt, hier gibt es Spezialfälle, einmal, dass ich die komplette

34:51.450 --> 34:54.310
Charakteristik auf Null setze, das heißt, in meinem denormalisierten

34:54.310 --> 34:57.470
Zahlenbereich bin und ganz viele Nullen auffülle in meiner Mantisse.

34:58.710 --> 35:01.230
Dann bin ich bei der positiven Null, ich kann aber auch die negative

35:01.230 --> 35:04.430
Null darstellen, indem ich von einem 1, einem Fortzeichen mache.

35:05.210 --> 35:09.890
Rein rechnerisch ist es dem System egal, es ist beides eine valide

35:09.890 --> 35:10.710
Darstellung der Null.

35:11.410 --> 35:13.790
Wie sieht es bei den denormalisierten Zahlen aus?

35:14.770 --> 35:18.210
Wenn ich hier meine Charakteristik mit Nullen auffülle, bin ich im

35:18.210 --> 35:19.430
denormalisierten Zahlenbereich.

35:20.850 --> 35:24.270
Die nächste denormalisierte, kleinste Zahl, die ich darstellen kann,

35:24.630 --> 35:27.010
ist, wenn ich meine Mantisse auffülle mit ganz vielen Nullen und eine

35:27.010 --> 35:34.070
1 hinten dran hänge, dann bin ich bei 0,0000001 mal 2 hoch minus 126

35:34.070 --> 35:37.530
und das kann man zusammenfassen, das kommt dann raus, 2 hoch minus

35:37.530 --> 35:38.290
149.

35:40.990 --> 35:44.530
Also 2 hoch minus 149, die kleinste denormalisierte Zahl.

35:46.510 --> 35:49.170
Genauso, wenn ich hochzähle, kann ich hier die größte denormalisierte

35:49.170 --> 35:51.690
Zahl, die ich darstellen kann, festlegen.

35:52.970 --> 35:58.450
Das ist einfach aufgefüllt mit Einsen und komme dann hier auf die 1

35:58.450 --> 36:01.070
mal 2 hoch minus 126 mal irgendwas.

36:03.490 --> 36:03.930
So.

36:06.010 --> 36:09.270
Dann gibt es verschiedene Möglichkeiten, diese not a number und

36:09.270 --> 36:11.030
unendlich darzustellen.

36:11.570 --> 36:16.170
Dafür haben wir hier die Charakteristik aufgefüllt mit Einsen, die

36:16.170 --> 36:17.930
Mantisse mit ganz vielen Nullen.

36:18.070 --> 36:21.010
Wenn ich vorne ein Vorzeichen habe, rede ich von plus unendlich.

36:21.150 --> 36:23.950
Habe ich hier vorne eine 1 stehen, rede ich von minus unendlich.

36:24.410 --> 36:26.830
Und die restlichen Zahlen, die wir jetzt nicht behandelt haben, ist,

36:26.950 --> 36:32.050
wenn ich die Charakteristik auf 1 setze und hier keine 0 habe, sondern

36:32.050 --> 36:34.070
hier andere Zahlen als 0 habe.

36:35.250 --> 36:36.650
Dann rede ich von not a number.

36:38.590 --> 36:41.290
Die Bedingung hier ist einfach, dass die Mantisse ungleich 0 ist.

36:41.670 --> 36:42.450
Das ist das Einzige.

36:45.070 --> 36:47.890
Hier gibt es also ganz viele Möglichkeiten, diese not a number

36:47.890 --> 36:48.590
darzustellen.

36:49.010 --> 36:50.910
Konkret 2 hoch 23 Möglichkeiten.

36:51.950 --> 36:53.590
Zumindest für die positiven not a numbers.

36:54.630 --> 36:56.830
2 hoch 24, wenn man positiv und negativ dazunimmt.

36:58.430 --> 37:00.450
Also, kurze Verdeutlichung.

37:00.610 --> 37:01.930
Wie sieht unser Zahlenstrahl aus?

37:04.450 --> 37:08.390
Ich bin hier bei plus 0 oder minus 0.

37:09.050 --> 37:11.930
Ich bin hier bei meinem MinReal, das ist die Zahl auf minus 126.

37:12.710 --> 37:17.170
Ich bin hier bei meinem MaxReal, das ist die 2 hoch 128 minus 2 hoch

37:17.170 --> 37:19.430
irgendwas Unbedeutendes.

37:21.890 --> 37:24.710
Dann habe ich die kleinste denormalisierte Zahl, das ist die 2 hoch

37:24.710 --> 37:25.910
minus 149.

37:25.950 --> 37:30.370
Ich habe die größte denormalisierte Zahl, das ist irgendwas mal 2 hoch

37:30.370 --> 37:31.970
minus 126.

37:32.650 --> 37:36.110
Also, dieser Teil ist kleiner als 1.

37:36.810 --> 37:39.710
Folglich ist das, was ich hier multipliziere, ein bisschen kleiner als

37:39.710 --> 37:41.330
die 2 hoch minus 126.

37:41.570 --> 37:44.070
Fällt also links von MinReal aus.

37:45.390 --> 37:47.790
Der grüne Bereich, den ihr hier seht, ist mein normalisierter

37:47.790 --> 37:48.250
Zahlenbereich.

37:48.470 --> 37:51.310
Alle meine Zahlen, die ich hier darstellen kann, befinden sich hier,

37:51.430 --> 37:52.750
also die ich normalisiert darstellen kann.

37:53.490 --> 37:55.810
Davor habe ich meinen denormalisierten Zahlenbereich.

37:57.130 --> 37:58.430
Die 0 ist hier ein Spezialfall.

37:58.990 --> 38:01.110
Und auf der rechten Seite habe ich dann meinen plus Unendlich.

38:01.570 --> 38:03.810
Ich kann das Gleiche natürlich in der anderen Richtung auch machen.

38:03.930 --> 38:09.690
Das heißt, da habe ich meinen denormalisierten hier links davon.

38:09.850 --> 38:12.310
Und dann kommen wir in den normalisierten Zahlenbereich weiter links

38:12.310 --> 38:13.350
auf der negativen Seite.

38:15.310 --> 38:19.390
So, und nach dem plus Unendlich komme ich natürlich ganz viele Not-and

38:19.390 --> 38:21.270
-Numbers noch, die ich auch nochmal so darstellen kann.

38:23.590 --> 38:25.090
Also, ich fasse zusammen.

38:26.050 --> 38:27.890
Das war eine etwas längere Zusammenfassung.

38:29.510 --> 38:32.850
Normalisierte Gleitkommazahlen, wir haben 254 verschiedene Exponenten,

38:32.970 --> 38:33.630
nicht 256.

38:35.270 --> 38:40.670
Das heißt, wir kommen auf 2 mal 254 mal 2 hoch 23.

38:41.510 --> 38:47.750
Also, wenn ich die 2 hier reinnehme, und hier nochmal durch 2 teile,

38:47.810 --> 38:52.510
bin ich bei 127 mal 2 hoch 25 normalisierte Zahlen.

38:52.750 --> 38:55.290
Ich habe einen denormalisierten Gleitkommazahlenbereich.

38:55.530 --> 38:56.770
Hier ist die Charakteristik 0.

38:58.030 --> 38:59.430
Hier ist die Charakteristik 0.

39:00.250 --> 39:07.170
Und hier kann ich zwei Fortzeichen unterscheiden und 23 Stellen für

39:07.170 --> 39:08.030
die Mantisse unterscheiden.

39:08.150 --> 39:11.590
Das heißt, hier habe ich 2 mal 2 hoch 23, also 2 hoch 24

39:11.590 --> 39:15.330
denormalisierte Zahlen inklusive plus minus 0, die ich darstellen

39:15.330 --> 39:15.610
kann.

39:15.610 --> 39:20.570
Ich habe not a number, hier ist die Charakteristik festgelegt als 255

39:21.690 --> 39:28.110
und ich kann hier 2 hoch auch 2 hoch 24 not a numbers inklusive plus

39:28.110 --> 39:29.230
minus unendlich darstellen.

39:30.350 --> 39:33.670
Weiterführende Literatur, sehr, sehr interessant.

39:36.810 --> 39:40.310
Das zweite Werk hier, whatever computer scientists should know about

39:40.310 --> 39:41.470
floating point arithmetic.

39:42.650 --> 39:45.350
Man denkt immer, die Sachen funktionieren genauso, wenn ich ein

39:45.350 --> 39:47.870
Computer sage, er soll zwei Zahlen addieren, dann kommt auch genau das

39:47.870 --> 39:48.530
Ergebnis raus.

39:49.510 --> 39:52.210
Man denkt, man macht eine Multiplikation mit großen und kleinen Zahlen

39:52.210 --> 39:54.150
und das Ergebnis ist korrekt und man kann ganz normal damit

39:54.150 --> 39:57.350
weiterarbeiten und man liest das Paper und dann wird man sich erst im

39:57.350 --> 40:00.070
Klaren darüber, was denn alles schiefgehen kann.

40:01.130 --> 40:05.170
Zu empfehlen, einmal hier IEEE Standard for Binary Floating Point, wie

40:05.170 --> 40:09.410
der Standard es macht und einmal hier tatsächlich von Goldberg, sehr

40:09.410 --> 40:12.410
zu empfehlen, sollte tatsächlich jeder mal gelesen haben oder

40:12.410 --> 40:14.070
zumindest mal drüber geschaut haben vielleicht.

40:14.450 --> 40:16.530
Aufgaben, jetzt sind wir soweit.

40:18.410 --> 40:22.370
Aufgabe 1, die Zahl Pi soll mit 7 Dezimalstellen hinter dem Komma im

40:22.370 --> 40:25.210
32 -Bit IEEE-Format dargestellt werden.

40:25.730 --> 40:27.450
Dafür betrachten wir uns die Zahl Pi.

40:29.350 --> 40:35.170
Erklärungsweise, das ist die 3,1415926 927 normalerweise, wenn es

40:35.170 --> 40:36.590
gerundet ist, glaube ich.

40:36.590 --> 40:41.090
Im Dezimal und ich möchte das jetzt darstellen im IEEE-Format.

40:43.330 --> 40:46.190
Reguläre Vorgehensweise, ich nehme das, was da vor dem Komma steht,

40:46.310 --> 40:49.230
mache eine Binärzahl draus, das ist die 3, also 1,1.

40:49.670 --> 40:52.290
Ich nehme das hinter dem Komma, mache da Binärstellen draus.

40:53.690 --> 40:59.510
0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,1,1,0,1,0.

41:00.130 --> 41:00.650
Offensichtlich.

41:01.870 --> 41:02.610
Muss jeder kennen.

41:05.510 --> 41:07.750
Zweiter Schritt, ich möchte normalisieren.

41:08.510 --> 41:12.370
Ich möchte vorne nicht 1,1 irgendwas haben, sondern ich möchte eine 1,

41:12.570 --> 41:13.190
irgendwas haben.

41:13.250 --> 41:15.530
Weil das ist ja das, was der Standard vorschreibt.

41:16.970 --> 41:20.670
Also verschiebe ich das Komma um eine Stelle nach links und sage aber

41:20.670 --> 41:23.750
dem System, dass ich das Ganze nochmal mit 2 multiplizieren muss, um

41:23.750 --> 41:26.190
das korrekte Ergebnis zu haben.

41:26.450 --> 41:27.850
Oder mit 2 hoch 1 in dem Fall.

41:29.570 --> 41:32.230
Was im Binären nichts anderes ist als ein Shift-Left.

41:32.690 --> 41:37.330
Also etwas mit 2 zu multiplizieren heißt, eine Binärzahl um eine

41:37.330 --> 41:38.310
Stelle nach links zu schieben.

41:38.610 --> 41:41.090
Hat man kein Komma, fügt man rechts eine 0 ein, hat man ein Komma,

41:41.130 --> 41:44.310
schiebt man alles vor das Komma um eine Stelle nach links,

41:44.510 --> 41:46.690
beziehungsweise man verschiebt das Komma um eine Stelle nach rechts.

41:49.130 --> 41:53.150
Also habe ich jetzt Pi in meiner normalisierten Darstellung.

41:54.370 --> 41:57.590
Dann weiß ich, dass meine Zahl positiv ist, das heißt minus 1 hoch 0.

41:59.110 --> 42:02.250
Ich weiß, ich habe einen Exponenten, der ist 2 hoch 1.

42:02.930 --> 42:06.230
Also kann ich das darstellen als 128 minus 127.

42:07.710 --> 42:08.930
Warum stelle ich das so dar?

42:09.430 --> 42:11.710
Weil wenn ich das so darstelle, dann habe ich hier direkt meinen

42:11.710 --> 42:13.790
Exponenten, den ich ablesen kann.

42:15.370 --> 42:17.010
Und dann der Rest ist einfach nur hinschreiben.

42:17.010 --> 42:19.390
1,1001 und so weiter.

42:20.150 --> 42:29.150
Also Vorzeichen 0, Exponent ist 1, das heißt meine Charakteristik ist

42:29.150 --> 42:29.810
128.

42:30.770 --> 42:33.010
Kann ich darstellen als die 100000.

42:35.710 --> 42:38.950
Ich kann die Mantisse direkt hinschreiben, die implizite 1 streiche

42:38.950 --> 42:41.450
ich weg und schreibe nur den Rest ab.

42:41.550 --> 42:45.890
Ich habe die 1001001 und so weiter.

42:47.950 --> 42:49.310
Schreibe ich das jetzt alles hin?

42:50.690 --> 42:54.210
Eine Stelle für das Vorzeichen, acht Stellen für die Charakteristik

42:54.210 --> 42:56.270
und die restlichen 23 Stellen für die Mantisse.

42:56.710 --> 43:01.070
Dann habe ich die Gleitkommandarstellung im IEEE-Format für die Zahl

43:01.070 --> 43:01.350
Pi.

43:03.230 --> 43:06.470
Möchte ich das Ganze noch hexadezimal zusammenfassen, kann ich immer

43:06.470 --> 43:11.530
Viererblöcke zu einer Hexadezimalziffer zusammenfassen und bekomme

43:11.530 --> 43:13.890
dann auf die 40490FDA16.

43:16.490 --> 43:17.950
Soweit ist es jedem klar, glaube ich, oder?

43:19.170 --> 43:20.290
Hat dazu jemand Fragen?

43:21.170 --> 43:22.030
Wer hat es nicht verstanden?

43:22.870 --> 43:23.510
Wer hat es verstanden?

43:24.330 --> 43:25.350
Aufmerksam, sehr schön.

43:26.870 --> 43:27.530
Nächste Aufgabe.

43:28.010 --> 43:30.770
Gegeben Sie eine Gleitkommandzahl im 32-Bit IEEE-Format.

43:31.550 --> 43:32.610
Z ist 0, 1 irgendwas.

43:34.210 --> 43:35.890
Wie sieht die Zahl in Dezimaldarstellung aus?

43:38.650 --> 43:41.850
Ein bisschen schreiben, dass wir nicht nur durchklicken haben, sondern

43:41.850 --> 43:43.090
tatsächlich auch schreiben haben.

43:43.790 --> 43:44.370
Erster Schritt.

43:44.470 --> 43:45.750
Ich schaue mir das Vorzeichen-Bit an.

43:45.850 --> 43:47.110
Das Vorzeichen-Bit hier ist 0.

43:49.490 --> 43:55.750
Das heißt, ich habe hier minus 1 hoch 0 ist gleich 1 als Vorfaktor.

43:56.450 --> 43:58.890
Das heißt, ich weiß hier, es handelt sich um eine positive Zahl.

44:00.650 --> 44:01.330
Zweiter Schritt.

44:01.830 --> 44:09.510
Meine Charakteristik ist die 1000011.

44:09.510 --> 44:11.370
Plus 1 im Binären.

44:12.730 --> 44:22.950
Und das ist die 128 plus 2 plus 1, also 131 im Dezimal.

44:23.830 --> 44:27.290
Und daraus kann ich jetzt meinen Exponenten berechnen.

44:27.290 --> 44:38.310
Wir wissen, Exponent ist gleich Charakteristik minus 127 für das IEEE

44:38.310 --> 44:38.750
-Format.

44:39.950 --> 44:47.770
In unserem Fall bedeutet das dann, Exponent ist gleich 131 minus 127.

44:49.570 --> 44:50.630
Und das ist die 4.

44:51.690 --> 44:55.190
Und die Mantisse wird ergänzt mit einer impliziten 1.

44:55.750 --> 44:58.870
Das heißt, ich habe hier eine 1,1100.

45:02.550 --> 45:04.910
Für meine Zahl ergibt sich dann folgendes.

45:04.910 --> 45:20.250
Ich habe die minus 1 hoch 0 mal rot für die Mantisse, 1,11 im Binären.

45:21.230 --> 45:24.670
Und blau für meine Charakteristik ist die 2 hoch 4.

45:25.530 --> 45:27.710
Mal 2 haben wir gesagt, ist im Binären was?

45:27.950 --> 45:28.590
Shift nach links.

45:28.590 --> 45:42.230
Das heißt, ich kann hier die Zahl interpretieren als 1,11 oder 1,1100,

45:42.970 --> 45:46.790
indem ich das Komma um vier Stellen nach rechts schiebe.

45:46.790 --> 45:54.810
Das heißt, ich komme dann auf die 1,1100 im Binären und wäre dann bei

45:54.810 --> 45:59.630
16 plus 8 plus 4.

46:00.810 --> 46:01.930
Und das ist die 28.

46:02.730 --> 46:03.630
Fragen dazu?

46:04.570 --> 46:05.230
Unklarheiten?

46:05.950 --> 46:06.870
Irgendwas nicht verstanden?

46:08.030 --> 46:08.030
Gut.

46:08.750 --> 46:09.250
Machen wir weiter.

46:09.930 --> 46:11.970
Hier übrigens nochmal in schöner Schreibweise, falls ihr meine

46:11.970 --> 46:13.810
Handschrift nicht lesen könnt, wollt.

46:16.610 --> 46:21.210
Dann wollen wir jetzt Gleitkommazahlen multiplizieren.

46:21.870 --> 46:23.050
Die Darstellung kennen wir ja schon.

46:25.550 --> 46:30.050
Und wir überlegen uns jetzt, im Grunde kann man ja jede Gleitkommazahl

46:30.050 --> 46:35.330
hinschreiben als mx, Mantisse x, mal 2 hoch ex, also Exponent von x.

46:36.350 --> 46:42.190
Und y als my mal 2 hoch ey, also Exponent von y.

46:43.150 --> 46:51.110
In dieser Darstellungsweise addiere ich Gleitkommazahlen, indem ich,

46:51.690 --> 46:55.730
falls der eine Exponent kleiner ist als der andere, also falls der

46:55.730 --> 47:02.010
Exponent von x kleiner ist als der Exponent von y, 2 hoch ex minus ey

47:02.010 --> 47:09.890
zur Mantisse von x multipliziere, my so drauf addiere und das Ganze

47:09.890 --> 47:13.130
mit 2 hoch Exponent von y multipliziere.

47:14.050 --> 47:18.650
Ich subtrahiere zwei Zahlen, falls der Exponent von x kleiner ist als

47:18.650 --> 47:24.950
der von y, mache ich ex minus ey auf der Seite von mx, ziehe my ab.

47:24.950 --> 47:30.710
Falls ey kleiner ist, mache ich ey minus ex auf der Seite von my und

47:30.710 --> 47:36.150
subtrahiere von mx, habe ich dann noch mal entweder 2 hoch ex oder 2

47:36.150 --> 47:36.490
hoch ey.

47:38.010 --> 47:40.610
Für die Multiplikation ist es wesentlich einfacher.

47:41.130 --> 47:44.310
Ich multipliziere einfach die Mantissen und multipliziere dann hier

47:44.310 --> 47:46.530
mit 2 hoch die Summe der Exponenten.

47:46.530 --> 47:52.470
Genauso bei der Division, nur dass ich bei der Division nicht die

47:52.470 --> 47:55.150
Exponenten aufaddiere, sondern voneinander subtrahiere.

47:55.770 --> 47:59.930
Die Folie müsste in der Vorlesung gewesen sein, war nicht, dann ist

47:59.930 --> 48:00.470
sie jetzt da.

48:01.490 --> 48:04.570
Im Skript ist sie glaube ich auch noch mal, vielleicht in einer

48:04.570 --> 48:06.410
älteren Form, aber das sind die Grundregeln.

48:06.790 --> 48:09.730
Was jetzt hier passiert bei der Addition, könnt ihr euch so

48:09.730 --> 48:10.270
vorstellen.

48:10.270 --> 48:25.030
Ich habe auf der einen Seite mx mal 2 hoch ex und my mal 2 hoch ey.

48:26.190 --> 48:29.410
Das kommt von meinem x und das kommt von meinem x.

48:30.590 --> 48:34.030
Das kommt von meinem y und das kommt von meinem y.

48:36.230 --> 48:40.250
Wenn ex kleiner ist als ey, dann ist ja meine ey größer.

48:40.970 --> 48:42.710
Also es handelt sich hier um die größere Zahl.

48:43.430 --> 48:46.130
Und wenn ich zwei Zahlen addiere, eine große und eine kleine Zahl,

48:46.550 --> 48:48.670
dann ist die Wahrscheinlichkeit groß.

48:49.430 --> 48:52.610
Also stellen wir uns mal vor, ich addiere 2 und 0,5.

48:53.430 --> 48:55.450
Dann bin ich ja im Bereich von der 2.

48:56.170 --> 48:58.430
Oder wenn ich 10 und 0,01 addiere.

48:59.250 --> 49:02.350
Dann bin ich im Zahlenbereich, also der Bereich meines Exponenten ist

49:02.350 --> 49:04.210
in dem Bereich, in dem sich meine 10 befindet.

49:04.350 --> 49:07.710
Das heißt, ich will den Zahlenbereich meiner größeren Zahl haben.

49:07.810 --> 49:09.070
Das ist in dem Fall 2 hoch ey.

49:10.290 --> 49:12.690
Und um die Zahlen richtig addieren zu können, muss ich die Zahlen auf

49:12.690 --> 49:13.770
den gleichen Exponenten bringen.

49:13.870 --> 49:18.170
Das passiert hier mit der kleineren Zahl, indem ich den Exponenten der

49:18.170 --> 49:22.470
kleinen Zahl minus das Exponenten der größeren Zahl subtrahiere.

49:22.470 --> 49:30.090
Das bedeutet, im Fall von 2 und 0,05 beispielsweise, bin ich bei 10

49:30.090 --> 49:32.190
hoch 1, bei der 10.

49:32.510 --> 49:36.150
Und ich bin bei 10 hoch minus 2, bei der 0,05.

49:37.550 --> 49:42.890
Ich würde dann hier minus 2 minus 1 machen, wäre bei minus 3.

49:45.330 --> 49:49.730
Ich habe dann die Darstellung 1 mal 10 hoch minus 3 für die 10.

49:49.970 --> 49:55.290
Und 0,0005 mal 10 hoch minus 3.

49:55.650 --> 49:57.750
Nein, 0,5 mal 10 hoch minus 3.

49:58.810 --> 50:00.350
0,5 mal 10 hoch minus 2.

50:02.250 --> 50:02.890
Was haben wir gesagt?

50:03.170 --> 50:05.130
Minus 2, minus 1, minus 3?

50:05.530 --> 50:06.870
Genau, minus 3.

50:08.650 --> 50:11.450
Also 5 mal 10 hoch minus 3 wäre dann die 0,5.

50:11.450 --> 50:15.290
Ich würde dann hier die Zahlen addieren und hätte dann im

50:15.290 --> 50:17.850
Zahlenbereich meiner größeren Zahl die Darstellung meiner Summe.

50:19.810 --> 50:24.310
Das ist natürlich wichtig, wenn ich im Rechner Additionen...

50:24.310 --> 50:25.610
Alle durstig heute.

50:27.130 --> 50:31.870
Das ist natürlich wichtig und gefragt auch.

50:32.970 --> 50:33.810
Durstig und gefragt.

50:34.790 --> 50:35.090
Party.

50:36.190 --> 50:37.050
Noch so leise.

50:43.000 --> 50:45.960
Wenn ich Zahlen addiere, große und kleine Zahlen addiere, dann möchte

50:45.960 --> 50:46.980
ich nicht...

50:46.980 --> 50:51.080
Stellt euch vor, ich habe eine Zahl mit 2 hoch 10 und mein Ergebnis

50:51.080 --> 50:52.700
kommt irgendeine Zahl mit 2 hoch 15 raus.

50:53.740 --> 50:56.240
Dann muss ich ja, nachdem ich summiert habe, muss ich nochmal

50:56.240 --> 50:56.940
normalisieren.

50:57.520 --> 50:59.920
Um den Aufwand der Normalisierung so klein wie möglich zu halten,

51:00.060 --> 51:02.340
möchte ich natürlich im Zahlenbereich der 2 hoch 15 bleiben.

51:02.920 --> 51:05.680
Deswegen haben wir hier diese Regeln und diese Regeln sollten uns

51:05.680 --> 51:07.720
vereinfachen, in diesem Zahlenbereich tatsächlich zu bleiben.

51:08.280 --> 51:10.920
So, zu lange geredet, Aufgabe 3.

51:13.980 --> 51:17.460
Addiere die beiden Gleitkommazahlen im IEEE Standardformat.

51:17.760 --> 51:25.060
Das ist einmal die 0 irgendwas und einmal die 0,1 irgendwas und einmal

51:25.060 --> 51:26.180
die 0,1 irgendwas anderes.

51:26.860 --> 51:27.460
Also x und y.

51:28.380 --> 51:31.420
Dafür betrachten wir uns jetzt mal, wie die Zahlen aussehen.

51:32.560 --> 51:34.720
Nehmen wir hier mal rot für das x.

51:35.780 --> 51:38.460
Das heißt, das Vorzeichen von x ist die 0.

51:40.700 --> 51:42.340
Das heißt, das ist eine positive Zahl.

51:43.040 --> 51:44.460
Ich habe die Charakteristik von x.

51:47.040 --> 51:54.020
Das ist die 1 0 0 0 0 0 1 1 1.

51:54.980 --> 51:58.160
Die erste 1 ist die 128.

51:59.040 --> 52:00.820
Dann hinten habe ich die 1 1 1.

52:00.940 --> 52:02.840
Das ist mein 4 plus 2 plus 1.

52:03.080 --> 52:06.400
Bin ich bei 7, also 128 plus 7, bin ich bei 135.

52:08.340 --> 52:10.540
Das meine Charakteristik ist die 135.

52:14.720 --> 52:17.760
Wir erinnern uns an die Formel Exponent gleich Charakteristik minus

52:17.760 --> 52:18.340
127.

52:19.200 --> 52:23.980
Was auch heißt Charakteristik, wenn man es umformt, ist gleich

52:23.980 --> 52:25.620
Exponent plus 127.

52:26.360 --> 52:27.160
Das nur nebenbei.

52:29.060 --> 52:33.480
Also 135 minus 127 bin ich bei Exponent von x gleich 8.

52:34.340 --> 52:37.920
Die Mantisse von x sieht so aus.

52:38.580 --> 52:43.780
Das heißt, ich habe hier die Implizite 1 und dann nochmal zwei Einser.

52:45.860 --> 52:47.680
Vorzeichen von y ist auch 0.

52:49.220 --> 52:55.240
Mantisse von y ist die 1 0 0 0 0 1 0 0.

52:55.520 --> 53:02.680
Das heißt, ich habe einmal die 128 plus die 4.

53:03.280 --> 53:04.900
Bin ich bei 132.

53:06.120 --> 53:12.460
Charakteristik von y ist gleich 128 plus 4, 132.

53:13.900 --> 53:16.080
Daraus folgt mein Exponent von y.

53:18.000 --> 53:23.160
Exponent von y ist gleich 5.

53:24.460 --> 53:27.040
Und meine Mantisse von y sieht so aus.

53:27.820 --> 53:33.100
Das heißt, das ist die 1,101 in Binärden.

53:35.160 --> 53:36.580
Wir wollten addieren.

53:37.000 --> 53:38.920
Das heißt, ich mache x plus y.

53:42.940 --> 53:53.600
x plus y heißt hier, wenn wir diese Darstellungsform wählen, bedeutet

53:53.600 --> 54:02.340
das, dass ich die 1,11 im Binären mal 2 hoch 8 habe.

54:03.260 --> 54:09.760
Und ich möchte das addieren zu 1,101 im Binären mal 2 hoch 5.

54:13.720 --> 54:15.280
Wir schauen uns die Formel an.

54:15.280 --> 54:18.420
Ich habe hier meinen Exponenten der größeren Zahl ist ey.

54:20.420 --> 54:27.820
Also habe ich hier e hoch x minus ex minus ey mal die Mantisse von x,

54:28.020 --> 54:28.940
also der kleineren Zahl.

54:33.340 --> 54:46.380
Die kleinere Zahl hier war y, also habe ich 1,101 mal 2 hoch minus 3

54:46.380 --> 54:52.060
plus 1,11, das jeweils im Binären.

54:54.000 --> 54:56.940
Und ich multipliziere mit dem Exponent der größeren Zahl, das ist die

54:56.940 --> 54:57.560
2 hoch 8.

54:59.880 --> 55:04.660
Das hier ist 5 minus 8, da bin ich bei der minus 3.

55:05.220 --> 55:10.540
Das hier ist die kleinere Zahl, also mein y 1,101.

55:10.960 --> 55:13.160
Das ist meine größere Zahl, das ist x 1,11.

55:13.700 --> 55:16.040
Und hier habe ich den Exponenten der größeren Zahl, das ist die 2 hoch

55:16.040 --> 55:16.280
8.

55:17.660 --> 55:22.600
Wenn ich das jetzt umforme, dann habe ich auf der linken Seite mal 2

55:22.600 --> 55:23.240
hoch minus 3.

55:23.380 --> 55:24.480
Das heißt, meine Zahl wird kleiner.

55:24.480 --> 55:25.860
Ich muss mein Komma nach links schieben.

55:27.220 --> 55:33.140
Und ich habe hier eine 0,0,0,1,1,0,1.

55:34.620 --> 55:36.680
Mein Komma war ursprünglich hier.

55:37.380 --> 55:39.120
Ich schiebe um drei Stellen das Komma nach links.

55:39.460 --> 55:40.460
1,2,3.

55:40.800 --> 55:48.720
Dann komme ich bei 0,001101 im Binären raus, addiere das mit der 1,11

55:48.720 --> 55:52.160
im Binären und multipliziere mit 2 hoch 8.

55:54.060 --> 56:02.820
Also ist mein Ergebnis 1,111101 mal 2 hoch 8.

56:05.500 --> 56:07.600
Die Zahl brauche ich nicht weiter normalisieren.

56:07.720 --> 56:10.100
Ich habe genau eine implizite 1 vorne.

56:10.300 --> 56:13.860
Das heißt, wenn ich die darstellen möchte in meiner

56:13.860 --> 56:19.520
Algebraikkodierung, habe ich hier mein Vorzeichen 0.

56:20.520 --> 56:22.480
Ich habe meine Mantisse.

56:23.080 --> 56:24.640
Das ist mit dem Exponenten 8.

56:24.800 --> 56:27.100
Also es ist die gleiche Mantisse wie bei der Zahl x.

56:27.800 --> 56:30.560
Also hier diese 8 ist die gleiche wie hier.

56:31.360 --> 56:33.000
Das heißt, ich kann hier die Mantisse abschreiben.

56:33.140 --> 56:35.300
Das ist die 1,0,0.

56:36.360 --> 56:38.020
1,0,0.

56:38.580 --> 56:40.200
0,0,1,1.

56:41.940 --> 56:42.900
Eine 1.

56:44.240 --> 56:47.380
Und für die Mantisse nehme ich die Implizite 1 weg und schreibe die

56:47.380 --> 56:49.460
restlichen Zahlen hin.

56:49.660 --> 56:50.700
Also die 1,1,1.

56:50.760 --> 56:52.360
Viermal die 1 und dann die 0,1.

56:53.440 --> 56:55.500
Den Rest muss ich natürlich hier auffüllen mit Nullen.

56:56.100 --> 56:56.660
Das ist wichtig.

56:58.420 --> 56:59.400
Das dürft ihr nicht vergessen.

57:00.160 --> 57:01.220
Gaberabzüge bei der Klausur.

57:02.960 --> 57:03.560
Soweit so klar.

57:04.340 --> 57:04.980
Fragen dazu?

57:07.060 --> 57:07.460
Keine.

57:08.320 --> 57:09.140
Gut, machen wir weiter.

57:09.140 --> 57:09.880
Aufgabe 4.

57:10.580 --> 57:13.860
Multipliziere die beiden Gleitkommazahlen im IEEE-Standardformat.

57:15.140 --> 57:18.220
Einmal haben wir hier 3FE0 und 3E40.

57:18.660 --> 57:20.060
Die wollen wir beide multiplizieren.

57:20.140 --> 57:22.840
Einmal dargestellt im Hexadezimalen.

57:23.320 --> 57:25.980
Einmal dargestellt im Hexadezimalen.

57:27.260 --> 57:28.960
Und einmal dargestellt im binären.

57:31.540 --> 57:32.180
Beziehungsweise...

57:32.880 --> 57:34.220
Das ist nicht ganz richtig.

57:34.480 --> 57:35.060
Das machen wir weg.

57:35.140 --> 57:36.400
Das ist nämlich das IEEE-Format.

57:37.800 --> 57:39.610
So, wir wollen multiplizieren.

57:40.040 --> 57:42.120
Wir haben gesagt, die Multiplikation ist im Grunde einfacher.

57:42.860 --> 57:44.680
Ich nehme hier meine Zahl X.

57:44.860 --> 57:47.500
Die kann ich schreiben als...

57:48.970 --> 57:52.510
Das hier ist meine Charakteristik.

57:53.410 --> 57:56.490
Das ist zufälligerweise natürlich auch die 127 im Binären.

57:56.790 --> 57:58.870
Das heißt, der Exponent...

57:59.950 --> 58:01.590
Also Vorzeichen gleich 0.

58:04.010 --> 58:04.550
Exponent...

58:04.550 --> 58:07.730
ist 127 minus 127.

58:08.650 --> 58:09.370
Also auch 0.

58:11.110 --> 58:13.510
Und die Mantisse...

58:13.510 --> 58:17.990
ist die 1,110 im Binären.

58:20.530 --> 58:22.550
Für Y...

58:23.110 --> 58:25.450
habe ich Vorzeichen gleich 0.

58:28.110 --> 58:28.810
Exponent...

58:30.470 --> 58:31.870
gleich...

58:31.870 --> 58:32.990
Hier fehlen drei.

58:34.550 --> 58:39.130
Das heißt, ich kann mir direkt folgen, dass mein Exponent minus 3 sein

58:39.130 --> 58:39.350
muss.

58:40.290 --> 58:42.150
Oder ich kann es natürlich auch berechnen.

58:45.410 --> 58:47.490
Wenn ich es berechne, ist es die 124.

58:47.930 --> 58:48.410
Wow.

58:50.490 --> 58:52.850
Das ist die 124 minus 127.

58:53.490 --> 58:54.750
Und auch das ist die minus 3.

58:56.950 --> 58:59.410
Und die Mantisse von Y...

59:01.160 --> 59:03.580
ist in dem Fall...

59:03.940 --> 59:07.980
1,10 im Binären.

59:09.160 --> 59:10.680
Die letzte Null muss man nicht hinschreiben.

59:11.980 --> 59:13.000
Einfach ein bisschen Gewohnheit.

59:13.720 --> 59:15.440
So, jetzt möchte ich berechnen X mal Y.

59:17.080 --> 59:25.220
Und unsere Regel besagt, ich multipliziere die Mantissen und ich

59:25.220 --> 59:30.100
multipliziere mit 2 hoch Exponenten...

59:30.100 --> 59:31.140
die Summe.

59:33.560 --> 59:36.300
Und die Summe von 0 und minus 3 ist die 0 minus 3.

59:36.880 --> 59:37.620
Also minus 3.

59:40.790 --> 59:42.830
So, jetzt kann ich hier die Addition machen.

59:43.430 --> 59:49.390
Die mache ich so, dass ich sage 1,11 mal 1,1.

59:50.550 --> 59:56.590
Komme ich auf 1,11 und 1,11.

59:57.870 --> 59:58.470
Summiert...

59:58.470 --> 01:00:01.010
1,0 behalte 1.

01:00:01.890 --> 01:00:03.810
Ist die 1, behalte 1.

01:00:04.130 --> 01:00:05.730
Ist die 0, behalte 1.

01:00:06.670 --> 01:00:07.490
Das müsste stimmen.

01:00:08.290 --> 01:00:12.090
10,101 im Binären.

01:00:12.830 --> 01:00:13.870
Das ist mein Ergebnis.

01:00:14.430 --> 01:00:21.710
10,101 im Binären mal 2 hoch minus 3.

01:00:24.670 --> 01:00:25.790
Bin ich fertig?

01:00:27.010 --> 01:00:27.770
Demokratische Wahl.

01:00:27.890 --> 01:00:28.930
Bin ich fertig mit der Aufgabe?

01:00:29.630 --> 01:00:30.150
Wer ist dafür?

01:00:31.690 --> 01:00:32.230
Wer ist dagegen?

01:00:33.510 --> 01:00:36.190
Was soll ich noch machen?

01:00:37.990 --> 01:00:38.450
Normalisieren.

01:00:38.630 --> 01:00:39.030
Sehr schön.

01:00:39.690 --> 01:00:42.930
Ich kann die 1,0 nicht in meinem Standardformat darstellen.

01:00:43.050 --> 01:00:45.350
Das heißt, ich möchte das Komma nach links schieben.

01:00:45.830 --> 01:00:47.450
Nach links schieben heißt mal 2.

01:00:50.590 --> 01:00:55.450
Also die Zahl, die rauskommt, die ich gerne hätte, mal 2.

01:00:57.550 --> 01:01:00.790
Und das bedeutet hier im Exponenten addiere ich 1 auf.

01:01:00.930 --> 01:01:03.250
Das heißt, ich bin hier bei der 2 hoch minus 2.

01:01:04.950 --> 01:01:05.750
Bin ich jetzt fertig?

01:01:07.590 --> 01:01:08.150
Ich auch noch nicht.

01:01:08.990 --> 01:01:09.430
Was fehlt?

01:01:13.450 --> 01:01:15.250
Du meinst die Darstellung in der...

01:01:15.250 --> 01:01:15.550
Okay.

01:01:16.450 --> 01:01:17.190
Gut, wir können es nochmal...

01:01:17.190 --> 01:01:18.630
die Darstellung können wir natürlich nochmal hinschreiben.

01:01:21.850 --> 01:01:24.490
Dafür machen wir unser...

01:01:24.490 --> 01:01:27.690
Kästchen hier, Vorzeichen, Mantisse.

01:01:28.790 --> 01:01:33.330
Also, Vorzeichen offensichtlich die 0 für eine positive Zahl.

01:01:34.670 --> 01:01:35.890
Dann Mantisse blau.

01:01:37.390 --> 01:01:38.790
Wir sind hier bei minus 2.

01:01:39.150 --> 01:01:40.650
Wir hatten bei minus 3.

01:01:42.690 --> 01:01:45.330
Wir sind hier bei minus 3 und das hier ist die 0.

01:01:45.630 --> 01:01:48.650
Das heißt, die minus 2 ist ja 1 mehr als das hier.

01:01:49.670 --> 01:01:51.810
Also bin ich bei der 0, 1, 1.

01:01:53.970 --> 01:01:58.410
1, 1, 1, 1, 1, 0 und dann nochmal die 1.

01:02:00.930 --> 01:02:01.210
Richtig?

01:02:02.590 --> 01:02:03.070
Einverstanden?

01:02:04.690 --> 01:02:05.430
Weißt du nicht?

01:02:06.090 --> 01:02:06.690
Oder unsicher?

01:02:08.150 --> 01:02:09.050
Willst du es nachrechnen?

01:02:10.470 --> 01:02:12.270
Du darfst nachrechnen und mir nachher sagen, ob es stimmt.

01:02:12.950 --> 01:02:13.430
Okay.

01:02:14.650 --> 01:02:16.330
Den Rest schreiben wir hinten.

01:02:16.430 --> 01:02:19.910
Das heißt, wir streichen jetzt die implizite 1 und schreiben dann hier

01:02:19.910 --> 01:02:26.130
die 0, 1, 0, 1 und ganz viele Nullen.

01:02:28.470 --> 01:02:29.970
Bin ich jetzt fertig?

01:02:31.010 --> 01:02:31.690
Soll ich weitermachen?

01:02:33.690 --> 01:02:35.290
Wer ist dafür, dass ich jetzt fertig bin?

01:02:36.810 --> 01:02:38.210
Wer ist dafür, dass ich noch weitermachen soll?

01:02:39.090 --> 01:02:39.890
Sehr gut.

01:02:41.310 --> 01:02:41.990
Nächste Aufgabe.

01:02:42.570 --> 01:02:43.750
Schauen wir mal, wie weit wir noch kommen.

01:02:44.150 --> 01:02:47.490
Eigentlich wollte ich noch Fehlerkorrektur mit euch machen.

01:02:48.570 --> 01:02:49.270
Aufgabe 5.

01:02:49.590 --> 01:02:50.470
Jetzt wird es interessant.

01:02:51.550 --> 01:02:55.870
Gegeben seinen 2 32-Bit-Gleitkommazahlen X und Y im IEEE-Standard

01:02:56.950 --> 01:03:02.370
Format, was wir suchen ist keine direkte Multiplikation, keine

01:03:02.370 --> 01:03:05.710
Division, sondern wir suchen 1 geteilt durch X minus Y.

01:03:07.130 --> 01:03:08.310
Das wollen wir berechnen.

01:03:09.010 --> 01:03:13.830
Auf den ersten naiven Blick sehen wir, das hier ist eine normalisierte

01:03:13.830 --> 01:03:15.310
Zahl, das eine normalisierte Zahl.

01:03:16.150 --> 01:03:18.070
Die Zahlen sind unterschiedlich, also die Mantissen sind

01:03:18.070 --> 01:03:18.630
unterschiedlich.

01:03:18.770 --> 01:03:22.750
Das heißt, X und Y sind unterschiedlich und natürlich, wenn ich X

01:03:22.750 --> 01:03:24.930
minus Y mache, bzw.

01:03:25.050 --> 01:03:28.370
wenn ich durch X minus Y teilen will, sollte X minus Y keine Null

01:03:28.370 --> 01:03:32.550
sein, sonst bekomme ich eine Division by Zero oder unendlich oder

01:03:32.550 --> 01:03:33.150
sonst irgendwas.

01:03:35.170 --> 01:03:38.150
Sollte hier nicht passieren, wir haben unterschiedliche Zahlen, das

01:03:38.150 --> 01:03:41.290
heißt, wie würde so eine Implementierung im Rechner aussehen?

01:03:41.670 --> 01:03:45.090
Der erste Vorschlag wäre, man sagt einfach, es gibt eine Zahl Z.

01:03:45.270 --> 01:03:46.730
Z ist 1 durch X minus Y.

01:03:47.990 --> 01:03:51.630
Wenn man jetzt natürlich sagt, okay, eigentlich möchte ich ja nicht

01:03:51.630 --> 01:03:55.470
durch Null teilen, also mache ich noch eine Überprüfung rein.

01:03:55.550 --> 01:03:59.190
Ich sage, X und Y dürfen nicht gleich sein, weil wenn sie gleich sind,

01:03:59.270 --> 01:04:01.230
habe ich hier Null und ich habe 1 durch Null, das will ich ja genau

01:04:01.230 --> 01:04:01.670
vermeiden.

01:04:04.270 --> 01:04:06.070
Und die Überprüfung sollte ja eigentlich reichen.

01:04:07.830 --> 01:04:10.170
Ich habe eine Zahl, die ist nicht Null und ich möchte 1 durch diese

01:04:10.170 --> 01:04:10.730
Zahl teilen.

01:04:11.290 --> 01:04:13.110
Offensichtlich sollte ein korrektes Ergebnis rauskommen.

01:04:15.530 --> 01:04:18.210
Betrachten wir uns das Ganze ein bisschen detaillierter, dann habe ich

01:04:18.210 --> 01:04:31.230
hier X mit der Charakteristik von X gleich 1, also Vorzeichen gleich

01:04:31.230 --> 01:04:32.710
Null, positive Zahl.

01:04:34.270 --> 01:04:39.850
Ich habe Charakteristik von X sowie die Charakteristik von Y, sind ja

01:04:39.850 --> 01:04:41.910
beide gleich, sind 1.

01:04:43.230 --> 01:04:51.310
Das heißt, der Exponent ist die Charakteristik minus 127, also 1 minus

01:04:51.310 --> 01:04:52.070
127.

01:04:54.510 --> 01:04:57.530
Folglich minus 126.

01:05:00.190 --> 01:05:06.350
Die Charakteristik von X sieht so aus, dass ich eine 1,000 ganz viele

01:05:06.350 --> 01:05:09.010
Nullen und dann irgendwann eine 1 bekomme, also die implizite 1 muss

01:05:09.010 --> 01:05:10.970
ich hier einfügen, weil es eine normalisierte Zahl ist.

01:05:13.130 --> 01:05:17.470
Und es sind insgesamt 22 Nullen und dann eine 1, das heißt, das

01:05:17.470 --> 01:05:22.490
Ergebnis ist eine 1 plus 2 hoch minus 23.

01:05:23.990 --> 01:05:25.530
Das Richtige gesagt, das Falsche geschrieben.

01:05:28.090 --> 01:05:29.950
2 hoch minus 23.

01:05:33.650 --> 01:05:37.810
Die Charakteristik von Y ist die 1,0 mit ganz vielen Nullen und

01:05:37.810 --> 01:05:40.170
unterscheidet sich an der letzten Stelle durch die Null.

01:05:40.630 --> 01:05:43.190
Das heißt, hier bin ich bei 1.

01:05:45.210 --> 01:05:47.030
Also implizite 1,0.

01:05:48.410 --> 01:05:49.730
So weit jeder einverstanden?

01:05:52.810 --> 01:05:53.670
Einverstanden, gut.

01:05:56.430 --> 01:05:57.510
Dann geht es weiter.

01:05:59.550 --> 01:06:02.030
Wir wollen die Zahl Z berechnen

01:06:06.050 --> 01:06:11.250
und Z setzt sich zusammen aus X minus Y.

01:06:12.770 --> 01:06:14.770
Das heißt, ich habe einmal die

01:06:18.090 --> 01:06:27.870
1 plus 2 hoch minus 23 mal 2 hoch minus 126.

01:06:28.390 --> 01:06:29.530
Das war mein X.

01:06:30.550 --> 01:06:36.270
Und ich möchte die Y abziehen, das ist die 1 mal 2 hoch minus 126.

01:06:40.510 --> 01:06:41.710
So weit keine Fehler.

01:06:42.010 --> 01:06:43.770
Das ist genau das, was auf der vorderen Seite stand.

01:06:46.410 --> 01:06:50.030
Jetzt habe ich hier die gleichen Exponenten in meiner Zweierpotenz auf

01:06:50.030 --> 01:06:50.750
der rechten Seite.

01:06:52.190 --> 01:06:53.050
Ich habe hier die 1.

01:06:53.130 --> 01:06:56.590
Wenn ich hier ausmultipliziere, dann habe ich einmal 2 hoch minus 126

01:06:57.090 --> 01:06:59.330
minus einmal 2 hoch minus 126.

01:06:59.450 --> 01:07:00.650
Das heißt, das kürzt sich weg.

01:07:06.370 --> 01:07:11.530
Und übrig bleibt ja dann nur noch die 2 hoch minus 23.

01:07:13.610 --> 01:07:23.510
2 hoch minus 126 mal 2 hoch minus 126.

01:07:26.650 --> 01:07:27.910
Ich habe hier keine Summe mehr.

01:07:27.990 --> 01:07:29.490
Ich kann einfach die Exponenten aufaddieren.

01:07:29.630 --> 01:07:32.570
Das heißt, ich komme auf 2 hoch minus 149.

01:07:33.670 --> 01:07:35.330
Kommt das irgendjemandem bekannt vor?

01:07:37.990 --> 01:07:39.670
Ungefähr 40 Minuten her?

01:07:41.190 --> 01:07:42.170
Ah, 30 vielleicht.

01:07:46.150 --> 01:07:47.370
Keiner kann sich erinnern?

01:07:51.430 --> 01:07:53.250
Das ist die kleinste darstellbare Zahl.

01:07:53.750 --> 01:07:55.710
Aber die kleinste denormalisierte darstellbare Zahl.

01:07:56.830 --> 01:08:04.490
Also wir haben hier die kleinste denormalisierte Zahl.

01:08:09.700 --> 01:08:11.840
Ahnt jemand schon, was das Problem sein könnte jetzt?

01:08:13.220 --> 01:08:15.040
Welches Problem auf uns zukommt?

01:08:19.280 --> 01:08:21.520
Ich meine mathematisch gesehen ist alles korrekt, was wir bisher

01:08:21.520 --> 01:08:22.020
gemacht haben.

01:08:23.280 --> 01:08:25.740
Jetzt müsste etwas Größeres rauskommen, aber das Große ist auch nicht

01:08:25.740 --> 01:08:26.280
mehr darstellbar.

01:08:28.160 --> 01:08:29.460
Die Zahl ist zu klein.

01:08:29.700 --> 01:08:31.160
Wir können die so nicht benutzen.

01:08:31.360 --> 01:08:32.900
Der Rechner kann so damit nicht umgehen.

01:08:35.820 --> 01:08:39.080
Wir fassen kurz zusammen, was das Problem ist.

01:08:39.080 --> 01:08:46.960
Erstens, die Zahl Z ist kleiner als MINERAL.

01:08:50.000 --> 01:08:52.000
Wir waren ursprünglich im normalisierten Bereich.

01:08:52.140 --> 01:08:54.080
Wir sind jetzt aus dem normalisierten Bereich rausgeflogen.

01:08:56.560 --> 01:09:00.980
Das bedeutet, wenn der Rechner mit dieser Zahl rechnet, wird die Zahl

01:09:02.480 --> 01:09:03.720
zu Null gerundet.

01:09:04.580 --> 01:09:06.220
Und zwar reden wir hier von einem Unterlauf.

01:09:06.220 --> 01:09:09.420
Das nächste Problem, wir wollen ja 1 durch Z rechnen.

01:09:10.960 --> 01:09:18.320
Die Zahl 1 selber ist nicht als denormalisierte Zahl darstellbar.

01:09:19.780 --> 01:09:27.440
Das bedeutet, bei einer Rechnung 1 durch Z wäre das Ergebnis

01:09:31.130 --> 01:09:32.310
1 durch 0.

01:09:33.370 --> 01:09:38.800
Und 1 durch 0 wäre in diesem Fall Not a Number.

01:09:47.780 --> 01:09:51.760
Also, ich fasse kurz zusammen, wir machen noch ein bisschen weiter.

01:09:52.620 --> 01:09:53.620
Ich fasse kurz zusammen.

01:09:55.160 --> 01:09:56.620
Wir haben zwei normalisierte Zahlen.

01:09:57.980 --> 01:10:00.440
Wir machen eine Subtraktion dieser zwei normalisierten Zahlen und

01:10:00.440 --> 01:10:02.620
berechnen 1 durch dieses Ergebnis.

01:10:03.440 --> 01:10:05.620
Und auf einmal sind wir in einem Bereich, in dem wir nicht sein

01:10:05.620 --> 01:10:05.980
dürften.

01:10:06.580 --> 01:10:08.020
Mathematisch gesehen ist alles korrekt.

01:10:08.020 --> 01:10:10.360
Ich darf das machen, es sind zwei unterschiedliche Zahlen.

01:10:10.540 --> 01:10:12.280
Ich bilde die Differenz dieser beiden Zahlen.

01:10:12.940 --> 01:10:16.180
Es müsste eine sehr große Zahl rauskommen, aber diese sehr große Zahl

01:10:16.180 --> 01:10:17.820
ist tatsächlich nicht darstellbar.

01:10:20.860 --> 01:10:23.040
Und auf den ersten Blick ist das natürlich nicht ersichtlich.

01:10:23.560 --> 01:10:26.420
Wenn ich im Rechner das alles mache, wenn ich programmiere, 1 durch,

01:10:27.280 --> 01:10:27.940
gehen wir mal zurück.

01:10:29.540 --> 01:10:33.260
Wenn ich mir diese Zeile anschaue, dann denke ich mir, es ist alles in

01:10:33.260 --> 01:10:33.540
Ordnung.

01:10:33.540 --> 01:10:36.600
Die Welt ist schön, die Welt ist gut, nichts kann passieren, mein Kot

01:10:36.600 --> 01:10:37.220
ist wasserdicht.

01:10:38.280 --> 01:10:41.960
Und dann kommen die nächsten Zahlen und dann sehen wir, das ist auch

01:10:41.960 --> 01:10:42.940
nicht so, wie ich es gedacht hätte.

01:10:44.120 --> 01:10:45.420
Wir rechnen noch ein bisschen weiter.

01:10:45.580 --> 01:10:50.880
Wir sagen zum Beispiel, wir könnten mit der denormalisierten 1

01:10:51.560 --> 01:10:53.160
darstellen, wir könnten mit der weiterrechnen.

01:10:53.800 --> 01:10:58.220
Also sagen wir, wir rechnen weiter.

01:11:00.980 --> 01:11:01.800
Mit V.

01:11:02.080 --> 01:11:05.580
Und sagen, V ist gleich 1,0 mal 2 hoch.

01:11:09.850 --> 01:11:14.370
V sei 1,0 mal 2 hoch 0.

01:11:14.510 --> 01:11:15.730
Also das ist meine 1.

01:11:17.110 --> 01:11:19.170
Und ich möchte hier 1 durch Z rechnen.

01:11:19.930 --> 01:11:21.490
Ich rechne jetzt aber V durch Z.

01:11:23.070 --> 01:11:25.050
Also ich nehme jetzt statt der 1 eine Variable.

01:11:28.770 --> 01:11:32.690
Und habe dann die Mantisse von V, geteilt durch die Mantisse von Z,

01:11:33.610 --> 01:11:44.030
mal 2 hoch Exponent von V minus Exponent von Z, weil ich V durch Z

01:11:44.030 --> 01:11:44.410
teile.

01:11:51.740 --> 01:11:56.460
Dann hätte ich, Mantisse von V ist ja 1,0.

01:11:56.840 --> 01:11:57.980
Da habe ich die 1,0.

01:11:59.940 --> 01:12:05.980
Ich habe, Z war 2 hoch, minus 149.

01:12:09.420 --> 01:12:11.200
Was habe ich da gemacht?

01:12:12.160 --> 01:12:13.100
Mal kurz überlegen.

01:12:14.540 --> 01:12:17.200
Mantisse von Z sollte nicht zu hoch, minus 23 sein.

01:12:19.180 --> 01:12:19.460
Okay.

01:12:22.540 --> 01:12:24.360
Überspringen wir das, ich kann gerade meine eigene Schrift nicht

01:12:24.360 --> 01:12:24.700
lesen.

01:12:25.720 --> 01:12:30.220
Punkt ist, ich müsste jetzt hier 1 durch 1,0 teilen.

01:12:30.400 --> 01:12:36.520
Also Mantisse von Z wäre, wenn wir so rechnen könnten, könnte man

01:12:36.520 --> 01:12:38.880
sagen, das ist meine Mantisse, das ist mein Exponent.

01:12:39.800 --> 01:12:42.560
Ich hätte hier 1,0 durch 1,0.

01:12:44.440 --> 01:12:48.740
Ich hätte hier den Exponenten von V, das ist mein 0.

01:12:49.560 --> 01:12:53.420
Also 2 hoch 0 minus die minus 149.

01:12:54.200 --> 01:13:01.860
Ich hätte hier 1,0 mal die 2 hoch 149.

01:13:04.500 --> 01:13:10.000
Und diese Zahl ist auch nicht darstellbar, weil die nämlich größer ist

01:13:10.000 --> 01:13:11.120
als mein MaxRail.

01:13:12.820 --> 01:13:17.280
In diesem Fall, also wenn der Rechner weiter rechnen könnte, mit einer

01:13:17.280 --> 01:13:23.040
normalisierten 1 und einer nicht normalisierten Zahl Z, dann würde

01:13:23.040 --> 01:13:24.360
hier ein Overflow entstehen.

01:13:25.600 --> 01:13:31.260
Weil das geht ins Unendliche und ich hätte hier die Darstellung von

01:13:31.260 --> 01:13:33.200
unendlich in meiner Gleitkommazahl.

01:13:33.740 --> 01:13:38.720
Also abhängig davon, wie der Prozessor jetzt diese Rechnung handhabt,

01:13:38.900 --> 01:13:42.320
intern, ob er jetzt sagt, er kann mit einer denormalisierten 1 quasi

01:13:42.320 --> 01:13:46.880
oder eine normalisierte 1 durch eine nicht normalisierte Zahl teilen

01:13:46.880 --> 01:13:50.540
oder ob er das nicht kann, abhängig davon bekomme ich jetzt entweder

01:13:51.140 --> 01:13:56.940
Not a Number für eine Division by Zero oder ich bekomme ein Plus

01:13:56.940 --> 01:13:57.520
Unendlich.

01:14:02.580 --> 01:14:04.740
Das besagt nichts Gutes für mein Mitschrieb.

01:14:06.340 --> 01:14:07.680
Oder ich bekomme ein Plus Unendlich.

01:14:15.340 --> 01:14:17.820
Für die Fehlerkorrektur reicht es leider nicht mehr.

01:14:17.940 --> 01:14:21.240
Ich würde dann einfach auf die nächste Übung verweisen, dass wir dann

01:14:21.240 --> 01:14:23.360
nochmal mit der Fehlerkorrektur und Heminggood weitermachen.

01:14:24.680 --> 01:14:26.000
Für heute sind wir dann durch.

01:14:26.840 --> 01:14:29.280
Noch ein bisschen früher Schluss, damit ihr eure 5 Minuten Pause

01:14:29.280 --> 01:14:30.000
bekommt.

01:14:30.660 --> 01:14:34.720
Ich bedanke mich und freue mich auf die nächste Übung, die, siehe

01:14:34.720 --> 01:14:36.280
Homepage, irgendwann stattfinden wird.

01:14:37.160 --> 01:14:37.620
Dankeschön.

01:14:37.720 --> 01:14:37.980
Tschüss.

