Ja, willkommen zu dem zweiten Teil dieses dritten Kapitels,
wo wir uns mit Ziffern und Zahlen beschäftigen.
In der letzten Session hatte ich ja Stellenwertsysteme vorgestellt und dort
dann natürlich speziell das Dualsystem beziehungsweise erstmal natürlich unser Lizima-System,
das wir typischerweise benutzen und dabei dann eben auch gezeigt,
wie man zwischen diesen Systemen hin und her rechnen kann,
welche Möglichkeiten es da gibt.
Abgesprochen hatte ich das Ganze dann damit,
dass ich das dann eben auf den allgemeineren Fall gebrochen nationaler Zahn erweitert habe,
das heißt, dass man eben auch Nachkommastellen hat,
die man dann eben entsprechend behandeln kann.
Ja, heute wollen wir uns dann mit negativen Zahlen
beschäftigen und mit halb logarhythmischen Darstellungen, also sprich das,
was man dann als Fließkomma-Zahn auch kennt.
Ja, für negative Zahlen gibt es nun drei unterschiedliche Varianten,
nämlich zum einen Betrag und Vorzeichen, zum anderen Offset-basierte Methoden,
beziehungsweise da spricht man immer von sogenannten Access-Scodierungen und Komplimentdarstellungen.
Alle drei Methoden werden wir kennenlernen und also auch benutzen müssen,
weil die im Zahndarstellung in Computern auch alle drei benutzt werden.
Typischerweise sieht es so aus, dass das,
was wir als ganze Zahlen haben, entweder Zahn,
also positive und negative Zahlen, die werden eben in Komplimentarstellung dargestellt.
Das, was wir als Fleece-Komma-Zahlen haben,
da kommen sowohl Betrag und Vorzeichen als auch Access-Kodierung zum Einsatz.
Weiteres folgt aber jetzt natürlich im Laufe dieser Session dazu
Ja, die eine einfachste Methode, Betrag und Vorzeichen,
sieht eben so aus, dass man ein Bit dann eben als Vorzeichen nimmt, beziehungsweise entsprechend interpretiert.
Das wird typischerweise dann eben das Most-Significant-Bit sein,
abgekotzt dann immer MSB, sprich das,
was dann am weitesten links steht, ist dann eben das Vorzeichen,
die restlichen Bits wären dann einfach ganz normal als Dualsal interpretiert, entsprechend normalen Stellenwertsystem.
Für viel mit Wortbreite sieht man also hier wieder das im Prinzip aussieht,
dass ich sage, also hier dieses Das beste Bit,
das wäre dann eben dieses Vorzeichen, was unterscheidet,
ob ich hier beispielsweise mit diesen Treibe dann eben eine Plus 1 oder wie hier dann eben eine Minus 1 kodiere.
Einen Nachteil von dem Ganzen sieht man jetzt natürlich auch schon.
Ich habe sowas wie die Null einmal als Plus und einmal als Minus Null.
Das heißt, irgendwo doppelt kodiert, nicht damit so ein bisschen was verschenkt.
Und ein anderes technisches Problem dabei ist dann eben auch,
dass die Rechenwerke, sprich das, was man nachher braucht,
um wirklich Aditionen und Subtraktionen durchzuführen.
Bei solchen Kodierungen dann eben vergleichsweise aufwendig werden. Deswegen wird das
für normale Zahlendarstellungen, also sprich jetzt für ganze Zahlen,
Indiger-Zahlen nicht weiter benutzt.
Eine andere Variante wäre dann die sogenannte Access-Kudierung. Da geht es darum,
dass man die Binärkodierung nimmt und einfach anders interpretiert,
dass man nämlich sagt, ich habe Einen Zahlen-WRZ, den ich darstellen möchte.
Und der wird dann quasi so kodiert,
dass sich dann eben mein Code nehme, diesen Code dann als ganz normale,
positive Dualzahl umrechnen und interpretiere und von diesem Wert dann eben ein Offset abziehe.
Und das ist dann eben mein Zahlenwert, den ich kodiert haben möchte.
So dieser Offset kann dann eben auch beliebig gewählt werden,
dadurch lasse sich dann, gehen wir gleich in einem anderen Beispiel dann noch sehen.
Dann nehme ich zum Beispiel auch die Zahlen-Bereich jetzt wirklich so anpassen,
dass wenn wir jetzt also einige wenige negative Zahlen,
aber jetzt mal ja positive Zahlen, braucht man das also dann entsprechend verschieben kann.
Ein Nachteil von den Systemen ist natürlich durch diese Verschiebung,
dass wenn ich jetzt also als Beat-Vector hier sowas habe,
wie eben die Unvector aus lauter Nullen,
dass das dann eben in der Kodierung nicht mehr der Null entspricht,
sondern die Null Als Wert erhalte ich dann eben,
wenn hier quasi dieser Bitwecker natürlich leicht im Offset ist,
finde ich dann eben hier aus dieser Berechnung dann null habe.
Ein Vorteil hierbei ist dann aber eben auch wieder,
dass es möglich ist, dadurch,
dass ich also quasi meine ganzen Zahlen habe,
auf denen habe ich jetzt also eine Ordnungsrelation,
um jetzt eben zu sagen, großer, kleiner,
dass der Zahnbereich ja einfach nur verschoben worden ist und demzufolge dann eigentlich,
also alles,
was ich hier als Größenvergleich definiert habe,
genauso weiterhin gilt
Benutzt werden solche Kodierungen, zum einen jetzt, also bei den Fließkomma-Formaten,
die wir jetzt am Ende dieses Kapitels noch kennenlernen werden und eben auch bei einigen Audio-Formaten,
auch dort hat man also dann solche negativen Zahlen kodiert. Ja,
hier das Beispiel dazu,
ich habe hier also einen Bittenmuster jetzt aus vier Bit mit den entsprechenden,
wie näherkodierten Dezimalwerten, von 0 bis 15 und wenn ich jetzt eben eine Access-8-Darstellung wähle,
würde ich dann eben von diesem Vinäherwert einfach acht abziehen Hätte dann also hier quasi jetzt meinen kodierten Wert und dann eben das zugehörige Witmus dann nicht,
wo man dann eben auch sieht,
dass ich natürlich die Null jetzt eben genau an der Stelle habe,
wo dann also der, wie näherwertes Bild muss,
das dann eben gleich diesem Offset entspricht.
Und hier als Access 6 sieht man dann eben,
dass sich das also auch noch so ein bisschen nach oben
oder nach oben verschoben werden kann.
In diesem Fall ist dann eben das insofern asymmetrisch,
als dass sie jetzt eben hier bis minus 6 hier dann
aber eben bis plus 9 meine Zahlen mit diesem Vierbett kodieren kann.
Das ist also die Grundidee jetzt zu diesem Access-Kodierung
Das, was man eigentlich jetzt in den Computern oder an der Computerarathmetik
jetzt für ganze Zahlen typischerweise immer benutzt, ist dann das W-Kompliment.
Wie, werden wir jetzt noch mal zurückdenken, an die Stellenwertkodierung,
dass man sagt, wie ist ja die Basis.
Das heißt also entweder im Dezima-System würde ich dann eben vom
Zehnerkompliment im Dualsystem dann eben vom Zweierkompliment sprechen. So,
und das B-Kompliment einer Zahl ist jetzt eben so definiert,
dass man sagen kann, das Kompliment der Zahl null,
ist dann eben auch die Zahl null selber.
Für alle anderen Zahlen ungleich null gilt, dass das W-Kompliment
definiert ist, als B hoch N minus Ven Zahlenwert.
Wie gesagt, B ist die Basis zu stellenwert,
Systems N ist dann eben die entsprechende Anzahl der zu berücksichtigen, denn Vorkomma stellen.
So, wenn ich jetzt diese Gleichung nehme,
kann ich das also im Prinzip dass sie umformen,
indem ich das Set einfach mal rüberbringe, wo dann,
wo man eben sieht, als typische Eigenschaft, es gilt eben,
dass B-Kompliment dieser Zahl addiert mit der Zahl selber,
er gibt dann eben den Wert, wie hoch ähm.
Das ist erstmal die Definition von dem Ganzen.
Warum das so praktisch ist, warum man das macht,
werden wir also auch gleich in ein paar Folien dann auch noch weitersehen.
Auch beim B-Kompliment kann ich jetzt also was wie so eine Stellenwertschreibweise anwenden und zwar Ist das,
dass ich auch vergleichsweise einfach zu sehen,
und zwar gilt für alle Stellen,
bis auf die höchstwertigste Stelle, also die Stelle N minus 1,
genau das Gleiche,
was ich sonst eigentlich auch bei gebrochen rationalen Zahlen normal in meinem Zahnsystem habe,
nämlich also entsprechend die Summe AI mal B hochlie,
nur für die höchstwertigste Stelle wird quasi seit einem negativen Faktor gewichtet
So, was das für Konsequenzen hat,
wie man sich das vorstellen kann,
wären wir jetzt also gleich noch in den entsprechenden Beispielen sehen.
Ja, dazu nehmen wir jetzt hier einmal folgende Beispiele.
Erstmal jetzt für das Zehner-Kompliment, in diesem Fall jetzt
mit Endlive 4, also 4 Vorkommastellen.
Es soll gebildet werden, das Zehner-Kompliment zur Zahl 3.7763.
Das wird jetzt einfach eins zu eins in diese Definition hier eingesetzt.
Und ich berechne dann eben 10 hoch 4,
Danach ist, dann eben das Zehner-Kompliment dieser Zahl,
dann 6.2037 und es gilt eben das,
wenn ich diese beiden Zahlen agiere, ich dann eben logischerweise genau 10.4 erhalte.
Das lässt sich jetzt auch erweitern auf Nachkomma stellen.
Hier erst mal für den Fall mit Endlife 2. Auch wieder einfach Definition angewandt,
auf in diesem Fall 0,3763, zu rechnen,
ist dann 10.2 minus 0,3763 und das Ergebnis bzw. das Zehner-Kompliment ist dann eben 99,6237. Hier sieht man jetzt,
dass es also wichtig ist, zu sagen,
wie viele Vorkommastellen man hat, beziehungsweise wie viele signifikanten Stellen.
Es gibt wahl demzufolge dann natürlich, also hier dieser Faktor,
von dem abgezogen wird, bestimmt wird. Das heißt,
wenn ich das Gleiche mache, aber jetzt hiermit in live null,
also vollkommener Stelle, dann müsste ich eben rechnen,
10 hoch null minus 0,377 63 und dann wäre eben das Zehnerkompliment,
0,6, 2, 3, 7. Das heißt,
da sieht man also sehr gut,
wie wichtig es ist, das ansprechend zu machen.
Gut, das war jetzt also im Dezimalsystem,
damit rechnen wir typischerweise natürlich nicht.
Wie sieht das jetzt im Dualsystem aus? Das sind also
jetzt hier diese unteren beiden Beispiele und zwar auch hier sieht man
eben wieder entsprechende Anzahl der signifikanten Vorkommastellen, endlive 2, endlive 8.
Ich habe hier als Zahl 1,0,01 dass sie jetzt als Zweierkompliment,
da müsste ich dann eben entsprechend rechnen.
Zwei hoch zwei, das Ganze dann in logischerweise Dual dargestellt.
Also eins, null. 0,00 minus dieser Zahl hier und
das Ergebnis für ja dann eben 0,1,1111.
Wenn ich das Ganze mit 0,1,11 gleich acht mache,
würde ich dann eben erhalten als Ergebnis
1, 1, 1, 1, 1, 1,
0, 1, 1. Da sieht man ihm Anzahl der Vorkommastellen,
ist ihm entscheidend,
weil das wirkt sich dann eben auch hier direkt auf dieses Ergebnis aus,
so eigentlich stand ihm natürlich dann die entsprechende Zweierpotenzial nehmen will oder nehmen muss und von der dann eben diesen Wert abziehe.
Neben dem B-Kompliment gibt es dann eben noch das B-1-Kompliment
Auch hier erstmal als reine Definition,
dass wie minus 1 Kompliment einer Zahl Set ist eben definiert
als B hoch N minus Set minus B hoch minus M.
Das heißt, wenn ich das jetzt also direkt vergleiche mit der entsprechenden Formel jetzt für das B-Kompliment,
habe ich hier eben jetzt einfach nur noch diesen zusätzlichen Faktor B hoch minus M.
Das heißt, für gebrochen rationale Zahlen ist das dann eben die niederwertigste Stelle,
wo dann eben Ein Wert abgezogen wird für Zahlen, ohne Nachkommastellen,
wird dann an dieser Stelle dann eben entsprechend wie hoch null,
sprich der Wert 1 abgezogen.
Auch hier gilt dann eben entsprechend jetzt erstmal dieser Formel,
dass das B minus 1 Kompliment plus der Zahl,
plus eben dieser niederwähligsten Stelle, da ich B hochende ist.
Ja, und man spricht da dann natürlich eben Dezimasystem
dann von Neuner im Dualsystem vom einer Kompliment
So, jetzt hatte ich ja in dem Beispiel vorher,
als es also um Zehner bzw. Zweier-Kompliment ging,
ja die entsprechenden Komplimente vergleichsweise umständlich erstmal aus der ursprünglichen Definition heraus ausgerechnet.
Was man in der Computer-Arrithmetik macht, also jetzt gerade,
wenn man von Binärdarstellung, also sprich dann Zweier und einer Kompliment ausgeht,
was man dort eben macht, ist folgender Trick, dass man die einzelnen Bits invertiert.
Dadurch erhält man da nämlich automatisch das einer Kompliment. Das heißt,
wenn ich jetzt hier diese Zahl habe, 1-1,
0-0, 1-0, 0-1,
alle Bits entsprechend invertiere, das heißt,
aus der einzelnen Nullmacher, aus der 0-1-Mar habe,
mache, dann erhalte ich eben von dieser Dualzahl,
dass einer Kompliment.
Weil es gilt dann nämlich,
wenn ich diese beiden Zahlen agiere und eins an einer jeder wenigsten Stelle hinzuaddiere,
dann würde ich als Ergebnis arathmetisch erhalten dann eben eine Eins und dann hier acht abschließende Nullen.
Das entspricht dann ihm ja genau dieser Definition, die dann hier entsprechend gilt.
Im Prinzip lässt sich das Ganze auch noch auf das Dezimalsystem erweitern. Also wenn ich jetzt sowas wie diese Neuer-Mana-Kompliment-Bilde. Da verwendet man dann eben folgenden Trick,
dass die ziffern jetzt, also in dem Sinne, inventieren,
natürlich jetzt nicht passiert, aber sie werden also ein paarweise getauscht,
also aus der Null wird eine 9 aus der 1,
wird eine 8, was heißt, ich bilde ja immer Paare,
die in der Summe 9 ergeben und zu einer Zahl 24.4053 wäre dann,
wenn ich das also hier nach entsprechend austausche,
wird aus der 2, eine 7 außer 4,
eine 5 hier aus der 5, eine 4,
aus der 3, eine 6,
nicht dann erhalte ich eben hier
Als neuner Kompliment dieser Zahl, die 75.546,
wenn ich das Ganze jetzt agiere in der Summe,
erhalte ich jetzt eben genau 99.999 und das ist dann eben 100.000 minus 1,
was dann also hier quasi dann minus B hoch null entspricht.
So, das kann ich jetzt nämlich genau nehmen,
um daraus jetzt Sowas wie ein E-Kompliment dann eben entsprechend einfach zu berechnen,
indem ich jetzt nämlich, gerade im Dualsystem,
wo das dann nur extrem einfach ist, einfach die einzelnen Bits invertiere,
aus der Null und eine Eins mache und umgekehrt.
Nicht damit erhalte ich, dass einer Kompliment,
anschließend agiere ich dann eben noch eine Plus Eins hinzu,
weil es gilt ja eben, wie Kompliment ist,
live being minus Eins-Kompliment plus Eins für den Fall M gleich Null und halte dadurch dann eben direkt das Zweier-Kompliment,
ohne dass ich jetzt wie hier anfangen muss,
entsprechend jetzt also wirklich eine richtige Subtraktion auszuführen.
Was ja also beispielsweise jetzt diesem Ergebnis hier zugrunde liegen würde.
Also das erstmal als Trick, wie man gerade im Dualsystem
ein Kompliment und zwar ein Kompliment bildet.
So, hier auch nochmal das passende Beispiel dazu.
Also ich habe hier diese Zahl, dazu soll jetzt also
quasi das Zweier-Kompliment gebildet werden
Das, was man eben macht, ist, die Bits zu invertieren.
Damit erhalte ich das einer Kompliment. Das ist also dieses Beispiel
hier jetzt. Und es wird dann noch plus eins hinzugerechnet.
Und ich erhalte dann eben 0011 011 11 1,
was genau dieses ist. Ich finde,
die Summe aus Originalzahl plus Kompliment ist dann eben genau dieses hier,
dass ich dann eben hier in Vektor aus lauter Nullen habe.
Und dann eben noch einen Übertrag,
der dann also quasi hier in einem Ergebnis dann,
also diese eine Stelle, noch mitmachen.
Auch hier könnte man das Ganze jetzt also quasi in
das Dezima-System erweitern
Und das Beispiel hatten wir ja auf der vorherigen Folie,
wo ich dann also auch von dieser Zahl erst das 9er-Kompliment bilde.
Das war dann 75.546, dann rechne ich nochmal plus 1.
Und es gilt dann eben,
die beiden zusammen in der Summe wären dann eben entsprechend 100.000.
So, warum kann man jetzt mit diesen B-Komplimenten
irgendwie sinnvoll was anfangen oder was rechnen?
Da kommen wir jetzt nämlich genau zu dieser Sache,
dass ich typischerweise in der Rechner-Irgendmetik dann ja auch eine
feste,
fixe Stellenanzahl habe
So, und das gilt jetzt eben, dass in der Definition jetzt,
also zum Beispiel für das Zweier- oder für das Szener-Kompliment ja gilt,
also das Kompliment der Zahl plus der Zahl ist ihm genau gleich B hoch N.
Wenn ich jetzt das N aber so gewählt habe,
das ist also der Anzahl der darstellbaren Stellen entspricht,
dann kann ich ihm genau diese Zahl nicht mehr darstellen.
Das ist also das, was also hiermit eigentlich zu sehen ist. Also ich habe hier meine Zahl,
ich addiere das Zweier-Kompliment und das Ergebnis ist ja Dieser Vector,
wo ich dann also hier eine eins und hier lauter Nullen habe,
wenn ich das jetzt eben auf eine Wortbreite in,
in diesem Fall jetzt von acht Begrenze,
kann ich diese eins nicht mehr darstellen.
Das Ergebnis ist Null. Demzufolge habe ich berechnet,
eine Zahl plus ihr Kompliment und das Ergebnis ist Null.
Das entspricht jetzt aber der mathematischen Definition, wie jetzt eigentlich eine Subtraktion stattfindet,
dass man dann nämlich sagen kann, wenn ich zwei Zahlen voneinander abziehe,
Und das Ergebnis ist null, dann ist also das,
was ich abgezogen habe, die negative Zahl entsprechend dazu.
Und das gilt dann eben x-minus-y entspricht dann eigentlich der Addition des Kompliments von Y.
Damit lassen sich dann eben auch beliebige Subtraktionen machen,
dass ich, wenn ich jetzt ihm Y abziehen möchte,
ich, also erst das Zweier-Kompliment bilde und dann brauche ich keine Unterscheidung,
mache ich eine Addition, mache ich eine Subtraktion,
sondern ich mache einfach die Addition dieses Kompliments und erhalte damit dann eben meinen arathmetisch richtigen Wert.
Das heißt, weswegen meinen jetzt diese Komplimentarstellung macht,
Quintessenz, die Subtraktion lässt sich eben durch das Addition,
durch die Addition des B-Kompliments, also die Frage dann, also das Zweier-Kompliments ersetzen.
Gut, und wie gesagt, für Entager-Zahn,
also sprich ohne Nachkommastellen, gilt ja dann also diese Eigenschaft,
dass ich dann also quasi auch immer sagen kann,
x-minus-y-via dann x plus ein Kompliment plus eins Also sprich,
als ich dann eben nochmal das,
den Wert an einer niedermehrlichsten Stelle hinzuandiere.
Ja, hier ist das Ganze jetzt nochmal kurz zusammengefasst,
an einem Beispiel. Also ich habe jetzt hier eine Dezimalsaal 10.
Es soll agiert werden, das Kompliment von drei.
Und als Ergebnis soll ich dann also auch hoffentlich sieben erhalten.
Ich spreche arthmetisch rechne ich dann also 10 minus drei.
Ja, wie sieht das jetzt aus in einem einer Kompliment?
Das wäre jetzt also hier die Kodierung meiner Zahl 10 mit acht Stellen,
dass eins Kompliment zu drei wäre ja nun nichts anderes als die Vinärzahl 3.
Die besteht aus Lautern Null und hier ist dann jeweils eine Eins gesetzt.
Bitweise invertiert wäre dann die minus drei kodiert,
als dieser Vector mit den sechs Einsen und den zwei Nullen am Ende.
Wenn ich das Ganze jetzt agiere, Ja, halte ich als Ergebnis.
Diesen Wert und was man jetzt eben noch machen muss,
ist dann, es galt ja,
die Subtraktion wird ersetzt durch die Addition des B-Kompliments,
plus eins,
dann muss ich dann eben noch entsprechend eine Einzeln zu addieren
und erhalte dann eben das addmetrisch richtige Ergebnis von sieben als
entsprechende Dualzahl
Das ist ein Zweier-Kompliment. Da brauche ich dann eben nie
dieses Plus-1-Rechnen. Nichts zu machen, sondern da ist das
dann nämlich hier in dem Kompliment schon entsprechend mit drin.
Meine Zahl 10. Das Zweier-Kompliment der Zahl 3 ist diese Zahl,
nämlich das Einer-Kompliment plus 1 anderen niederwärtigsten Stelle.
Das ist hier. Die beiden werden jetzt agiert.
Ich erhalte hier mein Ergebnis und das höchstwertigste Bit,
das, was ich hier nämlich quasi jetzt als Übertrag aus
dem Ganzen herauskriege
Wird verworfen und ich erhalte dann eben bei dieser begrenzten Stelle
eine Zahl dann gleich automatisch mein richtiges Ergebnis von sieben.
Das ist also der Trick, weswegen man diese Komplimentarstellung macht,
dass ich dann damit nämlich die Subtraktion ersetzen kann durch die Addition des Kompliments.
So, das Ganze kann man dann auch immer noch mal
zumindest für kleine Zahlen so ein bisschen veranschaulichen,
und zwar hier jetzt einmal im Sinne so eines Zahlenkreises,
wie jetzt also die unterschiedlichen Darstellungen aussehen
Eine ganze Art, in diesem Fall jetzt hier mit vier Bit-Zahndarstellungen,
einmal jetzt als Betrag und Vorzeichen,
nicht das oberste Bit wäre jetzt der, das Vorzeichenbild,
wo ich dann eben sage,
bei null ist es eine positive Zahl.
Bei eins ist es eine negative Zahl und die restlichen drei Bits
geben dann den Betrag an und ich habe dann eben hier
meine Werte von 0 bis 7 und hier entsprechend dann Werte von minus 0 bis minus 7.
Bei meiner Kompliment hätte ich jetzt, also meine Werte von 0 bis 7,
Die sehen im Prinzip identisch aus, wie das,
was man eigentlich so gewohnt ist.
Und ab dann geht das dann aber mit minus sieben bis minus eins weiter.
Und ich habe ihr dann eben auch noch sowas wie eine,
ich sage es mal, minus null,
beziehungsweise die null ist da dann eben auch doppelt kodiert.
Beim Zweierkompliment habe ich jetzt eben noch diese Verschiebung um eins hinzu,
was dann dazu führt,
dass also auch hier der positive Teil identisch aussieht,
der Vektor 1 00 entspricht dann der minus
Ich habe dann hier meine negativen Zahlen,
die dann eben kleiner werden zur Null und ich dann eben
hier entsprechend drüber laufe, dann in die positiven Zahlen.
Was man hier auch noch sieht,
was also auch eine sehr praktische Eigenschaft dieses Zweier-Kompliments ist,
dass ich dieses Most-Significant-Bit, also ich spreche da so höchstwertigste Bit,
eigentlich genauso wie hier wie so ein Vorzeichen interpretieren kann.
Das heißt, wenn das oberste Bit null ist,
habe ich eben entweder null bzw. eine positive Zahl,
wenn das oberste Bit 1 ist,
habe ich
eine negative Zahl
Dadurch kann man dann eben auch sehr einfache narrogmetischen Vergleichen rausgucken.
Habe ich jetzt eine negative Zahl oder ist die Zahl größer, Leichen null?
Die Aritometik mit diesem Kompliment, deswegen hier diese Darstellung jetzt
als Zahnkreis, das werden wir dann im nächsten Kapitel kennenlernen.
Kann man da nämlich also auch veranschaulichen als Winkel-Adition in diesem Kreis,
wo, wenn ich jetzt also quasi hier irgendwie sowas wie Winkel,
Abwehr 0 definiere ich dann also quasi die Zahl 1 und die Zahl 2,
wenn ich sie agiere,
dann eben der resultierende Winkel aus diesem Winkeln von 1 und 2 bestehen würde und ich das hier habe,
solange ich jetzt nicht irgendwelche Überläufe habe, wie gesagt,
das werden wir in Kapitel 4 dann also auch noch genauer betrachten.
Ansonsten, diese Grafiken sind entstanden eigentlich, also aus einer Arbeit,
wo das Ganze hier nochmal so ein bisschen visualisiert wurde,
ich kann das also hier auch nochmal kurz Anzeigen.
Dazu gibt es dann also ein entsprechendes App-Wert, was dann also dort verlinkt ist,
wo ich jetzt also hier meine unterschiedlichen Darstellungen auswählen kann,
auch sagen kann, wie viele Bilds ich betrachte nicht.
Also wenn ich jetzt das zum Beispiel, wo man dann sieht nicht,
also zumindest also ab fünf Bit fängt das dann an,
unübersichtlich zu werden, also jetzt hier bei 64 Einträgen sieht man dann,
also schon wird das, was ich entsprechend groß.
Nicht hier aber das Ganze, also deswegen nehme ich jetzt hier mal wieder nur fünf Bit,
hätte die jetzt 32 Einträge, wenn das jetzt nur eine positive Zahl ist,
habe ich dann eben hier meine Kodierung von null bis 31,
wenn nicht Betrag und Vorzeichen habe, wäre das so eine entsprechende Wert einer Kompliment und zweier Kompliment.
Nicht da sieht man das Ganze dann, also im Zweifelsfall auch nochmal rein praktisch. Ja,
das also zu dieser Darstellung im Zahlenkreis,
hier auch nochmal als Tabell einige Beispiele zusammengefasst,
und zwar habe ich hier auch in der Beschränkung auf 8 mit Wortbreite habe jetzt hier einfach willkürlich mal ein paar Zahlen genommen und zwar jetzt hier erstmal nur positive Werte,
die jetzt also hier dezimal von, also eins,
zwei bis zehn und dann eben 100, 127, 128. So,
wenn ich das jetzt habe in einer ganz normalen Dualdarstellung,
also sprich die Binärzahl, dem positiven Wert,
dann sieht man das, dass also hier entsprechend dem Ganzen entspricht,
127 wäre dann also im Prinzip dann dieser Vector 0 oder ein 7-1.
So bei den Darstellungen als Vorzeichen und Betrag Hätte ich dann also hier einfach die entsprechenden Wittmuster,
wo wir da dann eben nur entsprechend das oberste Witt dann eins ist und ich damit dann ihm entscheide,
habe ich eine negative Zahl zu diesem Plus N,
hier dann als Minus N gespielt hat.
Hier dann die Beispiele jetzt für einer Kompliment und für Zweierkompliment,
wie jeweils hierzu,
wenn ich das hier als N bezeichne und hier wie nekodiere,
wie dann also entsprechend die negative Zahl dazu aussehen würde.
Und hier sieht man dann eben auch diese leichte Asymmetrie beim Zweierkompliment,
dass ich eben eine minus 128 durch diesen Vector eins und dann eben lauter Nullen noch darstellen kann.
Beim einer Kompliment kenne ich dann Ihnen nur bis minus 127,
was dann damit kundt, jedes Mal eine Werte darstellen.
So bei den Access-Darstellungen, also hier mal als Beispiel Access minus 128,
hätte ich dann also hier die entsprechenden Codierungen jetzt für die negativen Zahlen,
die Codierungen für die positiven Zahlen habe ich jetzt hier nicht
mit hingeschrieben
Die sehen aber natürlich dann auch grundsätzlich anders aus, als diese Sparte hier nicht.
Deswegen ist das jetzt hier so ein bisschen außen vor,
aber hier sind wir auch nochmal den Vergleich jetzt für die negativen Zahlen zwischen diesen drei unterschiedlichen Methoden,
wie jetzt Komplimente gebildet werden und wie man dann also mit Vorzeichnern Betrag seine Zahlen macht.
Gut, das waren jetzt erstmal die negativen Zahlen,
dann kommen wir jetzt zu den zweiten größeren Thema,
was jetzt also hier dieses dritte Kapitel dann noch mit beinhaltet,
nämlich Das, was man allgemein animals Fließkomma-Format oder Gleikomma-Format bezeichnet,
wo es im Prinzip um diese Fragestellungen geht,
wie kann ich jetzt der große oder sehr kleine Zahlen, also irgendwie vernünftig darstellen?
Also in irgendwelchen technischen wissenschaftlichen Größen hat man das ja eben oft so,
dass ich sagen kann,
also irgendwie sowas wie die Masse der Sonne, nicht,
wäre dann eben beispielsweise 1,989 mal 10.30 Kilogramm,
wenn ich die Ladung eines Elektrons als 0,8 Wenn ich dann eine ganze Anzahl von Nolen,
so und so viel Kolumm, Anzahl der Atome pro Mol,
wo man dann eben wirklich sieht,
wenn ich jetzt gerade in diesen beiden Beispielen jetzt irgendwelche festen Zahlenbereiche habe,
dass ich dann eben entsprechend sehr viele Stellen habe.
Ich von der Beschreibung oder Umgangssprachlich,
das haben wir in dem ersten Teil schon gesehen,
kann ich das jetzt natürlich mit solchen Skalierungsfaktoren,
also sei das hier ein Kilo oder eben,
was ich dann also hier dann auch noch entsprechend jetzt also
mit reinrechnen könnte,
mit ausdrücken
In der Darstellung der Zahl, wenn ich das jetzt
eben als ganz normale gebrochen rationale Zahlen mache.
Das heißt also mit so und so viel Vorkommastellen und so
und so und so viel Nahkommastellen sieht man,
dass ich dann eben teilweise sehr viele Stellen brauche.
Das heißt, bei Aufgabenstellungen, wo ich also gleichzeitig
sowohl sehr große als auch sehr kleine Zahlen brauche,
führt das natürlich dazu, dass ich also wirklich sehr lange Zahlen brauche.
Teilweise wird das in einigen Zahlenformaten also auch gemacht.
Normalerweise ist das aber eben vergleichsweise unpraktisch Und man muss sich
dann also auch mal noch so ein bisschen vergegenwärtigen,
wo kommen eigentlich diese Zahlen irgendwo her?
Und gerade wenn ich jetzt also irgendwie so in den Bereich Signalverarbeitung gehe oder wenn ich jetzt also irgendwelche Regelungen,
Steuerungen habe, irgendwelche Messwerte unterscheide,
dann muss man sich eigentlich auch immer noch überlegen oder überhaupt erst mal gucken, wie viel Genauigkeit hat man wert.
Weil es typischerweise natürlich so ist, ich denke mir,
das kennen sie auch nur irgendwie aus der Schulzeit,
dass man also sagt, okay,
wenn ich jetzt irgendwas mit einem Taschenrechner rechne und ich da also irgendwie mit zwölf Ziffern,
also mein Ergebnis drin habe und ablesen kann,
dann suggeriert das eigentlich irgendwo eine Genauigkeit,
die teilweise bei den Eingangsgrößen oder Eingangsmesswerten vielleicht gar nicht vorhanden ist,
weil wenn ich jetzt also zum Beispiel hier in das Mikrofon spreche und meine Stimme wird irgendwo es aufgenommen und digitalisiert,
dann habe ich also an der Stelle irgendwo einen analog Digitalwandler,
der hat eben eine gewisse Genauigkeit, einen Wertebereich,
wie viele Lautstärkepegel hier jetzt eben gleichzeitig unterschieden werden können.
Und typischerweise ist das dann eben irgendwie eine bestimmte Anzahl oder eine bestimmte Zweierpotenz.
Aber dann nützt es mir jetzt also nichts,
wenn ich das dann jetzt also irgendwie in eine Zahl bringe mit 256 Bit,
weil einfach der analog Digitalwandler an der Stelle nur irgendwie beispielsweise jetzt
mit 16 Mitgenauigkeit arbeitet und ich dann also hier einfach irgendwie nur zusätzliche Dummy-Werte habe,
die dann da aber eigentlich gar nicht weiter bemöglicht werden
Das führt dann eigentlich zu der Art und Weise,
dass man sagt, ich kodiere meine Zahl jetzt in einer anderen Darstellung,
nämlich halb logarithmisch. Das ist also auch das,
was wir so jetzt bei wissenschaftlichen Schreibweisen von Zahlen haben,
nämlich, dass man sagt, ich unterscheide also einmal irgendwie das Vorzeichen.
Das sah dann eben plus oder minus eins sein. Dieses Vorzeichen,
multipliziere ich mit der Mantise, die Mantise sagt mir jetzt,
als gebrochen rationale Zahl wie groß diese Zahl ist.
Und ich habe dann eben noch einen Exponenten, mit dem
ich dann also den Weg dieser Mantise entsprechend zu einem Basiszahnsystem verschieben kann.
Das heißt, wenn ich jetzt eben hier so eine Darstellung habe,
1,999989 mal 10 hoch 30, dann wäre das Vorzeichen in diesem Fall eigentlich null positive Zahl.
Ich hätte dann eben hier meine 1,989 als Mantise und der
Exponent wäre jetzt in diesem Fall jetzt ein dezimales System,
dann eben 10 hoch
Das heißt, dieses wird dann eben entsprechend diesem Exponenten,
um passend viele Stellen in diesem Fall nach links verschoben.
Das heißt, hiermit wird dann mein Mantesse verschoben. So,
und damit kann man das dann eben erreichen,
dass man, wenn man jetzt seine Zahlen darstellt,
also mit vergleichsweise übersichtlichen Wertebereichen für manches und Exponent arbeiten kann,
dort auch sehr einfach atometische Operationen ausführen kann, wenn ich lange was zu sagen.
Und man eben hinsichtlich seiner Genauigkeit, das heißt,
wie viele Stellen brauche ich hier für die Mantise,
wie viele Spielerinnen brauche ich hier für den Exponent, dass dann eben wirklich an seiner Aufgabenstellung auch irgendwie sinnvoll anpassen kann. Neben solchen Halblogarithmischen Darstellungen,
nicht also weil hier habe ich eben dieses Logarithmische drin,
aber dadurch, dass ich hier die Mantise drin habe,
deswegen also Halblogarithmisch, gibt es also auch noch im Prinzip die Möglichkeit,
also komplett Logarithmische Darstellung zu machen,
Da habe ich dann aber eben den Nachteil,
dass also Addition Subtraktion jetzt wieder extrem aufwendig sind,
wo ich dann die Mantesse dann also quasi zur Einsätze und dann also hier zahlen werde, dann eben nur über den Exponenten ausdrücken würde.
Ja, im Dezimasystem ist das eigentlich das,
womit wir also typischerweise schon immer rechnen, nicht,
dass ich eben sage, ich habe jemand Vorzeichen,
Bit konnte ich auch interpretieren, als minus eins hoch er ist,
nämlich Wenn es gleich null ist, ist das gleich eins,
dann ist das also eine positive Zahl,
wenn es gleich eins ist, ist das dann eben minus eins,
dann habe ich eine negative Zahl,
Mantise mal zehn Hochexponent und die Mantise wäre dann eben eine ganz normale Festkommandizimalzahl und der Exponent ist dann eben ein ganzes dezimals Haare.
Das heißt, damit kann ich dann eben so eine Halblogger
rhythmische Darstellung sehr einfach umsetzen, dann eben auf Zahlendarstellungen,
wo ich dann jetzt Sehr einfach mit reichendem Kach.
Wie gesagt, da sind wir jetzt eigentlich so aus der... Mathematik aus allem gewohnt.
Und da sind dann eben auch die Zahlendarstellungen,
wie ich sie jetzt also in der Programmierung für meine verschiedenen Fließkomma-Zahlen mit benutze.
Nicht, dass ich also beispielsweise die Avogadro-Zahl,
also 6,02, 3, mal 10, noch 23,
dann eben schreiben würde, als 6.02, 3,
e23,
und damit wird dann dementsprechend Mantise und Exponent
voneinander abgetrennt
Und hier dann eben als Beispiel jetzt für eine sehr kleine Zahl,
wo ich dann eben mit dem I minus 19 als Skalierungsfaktor,
also 1,6 mal 10 und minus 19 mitbeschreibe. So,
was man jetzt mit dieser Auswahl der Stellen für Mantise und Exponent macht,
ist, dass man sagt,
also je mehr stellen ich für den Exponenten nehme,
umso größer werden hier die Zahlenbereiche,
das sieht man also hier in dem Bereich Der Zahn,
und zwar interessant, dann immer auch einmal in Richtung auf sehr große Zahlen.
Und auf der anderen Seite in Richtung auf sehr kleine Zahlen,
nämlich wenn ich jetzt mit negativen Exponenten arbeite,
wo ich dann eben sagen kann,
was habe ich hier mit einer Stelle für den Exponenten?
Zwei, drei, vier Stellen und so weiter.
Und hier dann auf der anderen Seite mit der Anzahl der Stellen
in der Mantise beschreibe ich dann die Genauigkeit in meinen Zahlen selber.
Das heißt, wie viele unterschiedliche Werte habe ich dann hier drin,
die ich dann dementsprechend passend um meinen Exponenten nach links
in den Vorkommerbereich oder nach rechts in den Nachkommabereich dann verschieben würde.
Ja, das erstmal so zu deinem Auswahl,
so jetzt kann man jetzt natürlich sagen,
aufgrund dieser mathematischen Eigenschaften überlege ich mir jetzt also beliebige Fließkommazahlen
und wenn man ja sagen wir mal so in die Historie geht,
dann kann man jetzt eben auch sagen,
wie sieht das mit Fließkommazahlen beziehungsweise Fließkommaberechnung in der Historie von Computern aus.
Auch die ersten Rechner in diesem Fall noch mechanisch, also der Zusatz,
Z1, hatte im Prinzip schon so etwas wie ein Fließkomma-Datenformat mit 22 Beet, was dann für Vorzeichen und Mantise und Exponent zusammengenommen ist. In den 50er Jahren,
also sprich in der Verbratung der Rechner,
die dann also im Prinzip Asyl dann über die Röhrentechnik und dann die Transistortechnik umgesetzt wurden,
gab es dann eben Eigentlich auch schon immer irgendwelche Fließkomma-Darstellungen für numerische Berechnungen,
als dann die Rechner entsprechend kleiner wurden, also das,
was dann Very Large Scale Integration wurde,
wo ich dann eben sagen konnte, ich kann mit einem einzigen Chip,
einem Stück Silizium dann eben eine CPU umsetzen,
was also dann beispielsweise dann eben so zu den ersten PCs geführt hatte,
da war es eben so,
dass diese allerersten Rechner intern erstmal nur Festkommarithmetik in der Hardware rechnen konnten und alles,
was Fließkomma-Arhythmetik war, wurde dann über entsprechende Bibliotheken umgesetzt in mehrere Teilschritte,
dass sich dann eben auf eigentlich einen integerischen Einheiten dann mit meinen Fließkommazahlen rechnen konnte.
Aus der Zeit kam es dann eben auch, dass auf den Platinen,
also auf den Motherboards, wo dann also die Chips drauf waren,
dann teilweise dann eben noch irgendwie so leere Sockel waren,
wo man dann also jetzt nicht nur irgendwo einen Prozessor aufsetzen konnte,
sondern also auch noch sowas wie Co-Prozessoren, die dann speziell Hardware für Fließkomma-Berechnungen beinhalteten.
Und wie gesagt, der erste davon war,
also in den 80er Jahren, dann der Hinter 80,
87, das war dann eine Co-Prozesse zum Intel 80,
86, wo man dann,
wenn man jetzt eben vier Fließkomma-Berechnungen hätte machen müssen,
dann das von der Softwareberechnung, wie sie sonst,
also im Prinzip ja auch schon immer möglich ist,
dann eben in Hardware unterstützte Berechnungen bringen.
So, in den 80er Jahren wurde dann ein Standard für eine Fließkommarithmetik überhaupt erst mal definiert.
Ende der 80er Jahre kamen dann die ersten Prozessoren,
wo also diese Co-Prozessor-Schiffs in der CPU selber mit drin war,
wo man dann also im Prinzip Rechenwerke sowohl für Inditor-Recheneinheiten als auch für Fließkomma-Berechnungen mit drin hatte.
Ja, dann in euren Programmiersprachen, Java ist es eben so,
dass dort dann eigentlich sowas wie diese Fließkomma-Standards dann also auch verwehntlich vorgeschrieben wurden.
Inzwischen muss man sagen, ist eben dieses Al-Triple-I 7054 eigentlich der Standard,
der inzwischen sich überall durchgesetzt hat, den ich jetzt also auch gleich noch weiter beschreiben möchte. Ja,
und wie gesagt, inzwischen fließt schon mal Berechnung,
das ist etwas, was ich hatte,
ja ganz am Anfang auch schon mal als Folie so zu Moorslaw und der technischen Entwicklung aufliegen hatte,
wo man diese Top 500-Liste der Supercomputer,
wenn ich also hier nochmal so drei Zahlen dann also mit rausgenommen,
also da ist im Prinzip 1996,
hatten dann also die ersten Supercomputer mit 9152 Prozessoren dann also als Rechenleistung einen Terraflop erreicht,
das Vlog steht dann immer für Floating Point Operations bis Seconds.
Nicht, das heißt, entsprechend dann also allen Terra Throp
als Maß für die Geschwindigkeit inzwischen 2008 wurden dann,
also um Faktor 1000, die Peter Flop-Marke erreicht.
Inzwischen ist also jetzt der jetzt gerade aktuelle schnellste Rechner aus
der Top 500 Liste lande eben mit 415,5 Peter Flops.
Fließkomma-Rechner der Leistung mit rein. Wie gesagt, dieses hier,
Terra Flop hatte ich auch in dem schon gesagt,
das ist also etwas, wo inzwischen Grafikkarten,
zumindest wenn man ein etwas tiefer in die Tasche greift,
so in der reichen Leistung liegen.
Ja, Fließkommazahlen, wie sehen die jetzt aus?
Wie sind die entsprechend definiert? Dazu habe ich hier jetzt
erst nochmal eine Grafik aus dem Buch von Tarnbaum und Austin,
wo wir uns da selbst nochmal ein bisschen veranschaulichen werden,
wie eigentlich Fließkommazahn prinzipiell aufgebaut sind.
Und zwar muss man da dann nämlich immer die unterschiedlichen Bereiche unterscheiden
Und zwar hat man typischerweise diese Fließkommerzahn, hatte ja auch
schon gesagt, dann immer als Betrag und Vorzeichen.
Das heißt, Vorzeichen ist erstmal außen vor. Dem zuvor
habe ich es dann immer eine Symmetrie zwischen positiven und negativen Zahlen.
Dann gibt es eine spezielle Darstellung für den Wert Null.
Und es gibt noch spezielle Darstellungen für unendlich und für Nordden Namen,
was also im Prinzip dann athmetische Ergebnisse sind,
die dann eben nicht stimmen können,
was man dann also auch entsprechend in diesem High-Triple-E 754 Standard mit definiert,
werde ich auch gleich noch vorstellen, was das ist.
Gut, also separate Darstellung für den Wert Null. Dann habe ich jetzt hier meine darstellbaren Zahlen,
sowohl positiv als auch negativ und habe dann eben entweder sehr große Zahlen oder sehr kleine Zahlen,
die ich dann nicht mehr darstellen kann,
demzufolge kann man da dann eben auch immer unterscheiden zwischen positiven Überlauf bzw. Unterlauf und logischerweise dann eben Bei anderen Vorzeichen, einer negativen Über- und Anlauf.
So, und was diese Fließkommazahlen dann eben auch rauszeichnet oder was sie haben, ist, dass der relative Abstand ein Nachbarta-Zahn ihm ähnlich bleibt. So,
wenn ich jetzt da sowas wie, was ist damit gemeint,
also wenn ich jetzt sowas wie Indigital nehme und sage,
ich gucke die mir einfach jetzt mal irgendwie so da rein nach an im Verhältnis zueinander und zwar null zu 1,
1 zu 2, 2 zu 3 oder eben später 65.500 35,
zu 35, 65.536, dann sieht man,
dass die relativen Abstände zwischen zwei benachbarten Zahlen hier,
je größer die Zahlen werden, betragsmäßig immer kleiner werden.
Bei den Fließkommazahlen habe ich das nicht,
sondern da werden, wenn die Zahlen entsprechend größer werden,
diese relativen Abstände eben auch entsprechend größer und das Verhältnis bleibt dann eben gleich,
was dann aber eben auch dazu führt,
dass sich Jetzt eben Bayern entsprechend größeren Zahlen,
dann zwischen zwei benachbarten Zahlen, die ich darstellen kann,
dann eben auch so was wie Lücken habe,
weil ich da dann eben auch nicht alle Zahlen mit dem Fließkomma-Format dann erfassen oder darstellen kann,
wie ich das jetzt also irgendwie jetzt hätte,
wenn ich bei einer Festkomma-Metik und da entsprechend langen Wortbreite bleiben würde.
So, etwas, was dann bei den Fließkommazaren auch immer
noch wichtig ist, ist dann die Art und Weise,
wie man die Darstellung der Zahlen macht
War generell, kann ich erst mal sagen,
ist dieses Format in der Zahndarstellung nicht eindeutig. Das heißt,
die Zahl 123, mal 10 hoch null,
also sprich von der 23, kann ich eben entweder so schreiben,
ich kann es aber auch 12,3, mal 10 hoch 1 oder 1,2,
3 mal 10 hoch 2 oder 0,1, 2,3,
mal 10 hoch 3 schreiben.
Nicht je nachdem, wie ich also jetzt hier dieses Komma
in meiner Zahl setze und wie ich dazu dann eben passend den Exponenten hier skaliere.
So, und da ist es dann eben wichtig,
so etwas wie eine normalisierte Darstellung zu haben,
und zwar ist dass jetzt der Fall,
wo ich die Mantese jetzt eben so verschiebe,
dass sie im Bereich größer als oder größer gleich eins und kleiner als die Basis des Zahnsystems liegt.
Und dann habe ich eben eine genau eindeutige Darstellung.
Im Dezimasystem würde dieses hier heißen,
dieses hier wäre jetzt die normalisierte Zahl oder rein praktisch gesprochen
Eine Zahl mit einer Vorkommastelle. Das heißt,
wenn ich jetzt hier Vorkommastelle null und hier jetzt also irgendwas hätte,
müsste ich das eben so lange verschieben, bis ich hier eine Vorkommastelle habe,
die dann eben größer als null ist und eben kleiner als die Basis.
Das heißt, wenn ich jetzt, also hier irgendwie Netzhilfe von 1 bis 9 habe,
wäre das dann eben eine normalisierte Dezimalzahl. Das ist also die Normalisierung,
so im Dualsystem Heißt das jetzt aber andererseits wieder dadurch,
dass ich da ja nur als Ziffer 0 und 1 habe,
dass ich die Andualzahl eben so lange verschiebe,
bis ich vor dem Komma eine Eins habe. So,
und dann kann man nämlich jetzt noch folgenden Trick anwenden in Bezug auf die Mantise,
dadurch, dass die normalisierte Zahl jetzt so kodiert ist,
dass sich hier vorne eine Eins habe und dann hier irgendwie meine Stellen,
dass ich diese Eins in der Mantise gar nicht mit zusätzlich speicher,
sondern sage, führ normalisierte Zahlen weiß ich, ich habe 1,
irgendwas Und ich speichere dann also hier nur die Stellen als Nachkommawerte.
Nicht dadurch gewinnt man, war einer begrenzten Wortbreite von meinetwegen
32 Bit oder 64 Bit dann immer noch eine zusätzliche Stelle,
die man dann also quasi hier hinten für die Kodierung in
der Mantesse dann eben noch weiter mit benutzen kann.
So,
daneben gibt es dann eben auch noch nicht normalisierte Zahlen,
das heißt dann eben kleine Zahlen,
wo ich dann also hier jetzt entsprechend keiner eins beziehungsweise
keinen Wert größer gleich eins beziehungsweise zwischen 1 und B
liegen habe
Das wird dann eben noch mit einer entsprechenden speziellen Kodierung jetzt für den Exponenten wieder mit dargestellt.
Werden wir jetzt aber gleich sehen. Da landen wir jetzt nämlich bei dem,
wie in Rechnen HG es eben seit Mitte der 80er Jahre,
wie es Komma-Zahlen dargestellt wurden oder werden, bis Nord 1985 war es eben so,
dass es also wirklich beliebige Fließkomma-Formate gab. Das heißt,
jeder Hersteller von irgendwelchen Rechnern hat sich da also irgendwie sein eigenes Format überlegt mit unterschiedlichen Anzahlen von Bits in meinem TSM Exponent,
Exponenten gab es also Nicht nur mit irgendwelchen Zweierpotenzen,
das heißt also 2 oder 16,
sondern also auch welche, wo man dann eigentlich ähnlich,
also gerade in den Anfängen der Computertechnik dann eigentlich ähnlich wie jetzt,
da sitzt die Malarithmetik dann eben als Basis 10 zugrunde gelegt hatte.
Und damit dann also im Prinzip irgendwie sein eigenes Gleitkomma-Format definiert hat,
wenn man jetzt mit diesen Gleitkommazahlen aratmetische Berechnungen gemacht hatte,
musste ja auch irgendwo zwischendurch,
weil ich ja irgendwo in dem System nur eine begrenzte Wortbreite
zur Verfügung habe,
auch irgendwo eine Rundung stattfinden
Auch da hatte dann jeder Hersteller seine unterschiedliche Rundungsarreth-Meeting mit drin,
was dann eben dazu führte, dass wenn ich ein Programm hatte,
was also auf dem Rechner eines bestimmten Herstellers lief,
und ich da jetzt also irgendwie bestimmte numerische Algorithmen mit drin hatte,
dass dieses Programm gegebenenfalls, also auf dem Rechner eines anderen Herstellers,
also ganz andere Ergebnisse lieferte,
weil dort dann eben andere Zahlendarstellungen,
andere Rundungsvarianten feingesetzt worden sind, was dann eben dazu führte,
dass ich da dann eben solche Protabilität eben nicht mehr dran hatte.
Gut, seit 1985 gibt es dann eben diesen Hard Fable Easim 154 Standard.
Das ist inzwischen eigentlich Basis für alles an Fließkomma-Darstellung,
was wir heutzutage kennen, womit wir rechnen.
Dort sind neben festen definierten Formaten für die Fließkomma-Zahlen auch Regeln mit drin,
wie Rundungsoperationen aussehen müssen. Dadurch ist dann eben Gewährleistet,
dass ich Algorithmen,
die ich also auf dem einen Rechner schreibe oder für den einen Rechner schreibe,
dort zur Ausführung ränge,
wenn ich mein Programm nehme auf einem anderen Rechner oder einer anderen Hardwareübersätze
und das dort rechne ich dann eben auch identische Ergebnisse haben.
Das ist auch bitter. Ursprünglich waren in diesem Standard dann
eben jetzt nur Zahndarstellungen mit 32 oder 34 Bit mit drin.
Seit 2008 gibt es dann also noch diverse Erweiterungen auf 16 Bit oder 128 Bit-Formate.
Inzwischen gibt es also auch sowas wie 8-Bit-Float,
habe ich jetzt natürlich sehr wenig Genauigkeit und das ist auch noch relativ kleine Zahlenbereiche für einige Anwendungen.
Also dann war ich Machine Learning zum Beispiel, kann genügt sowas,
aber weil ich da jetzt also weniger die Genauigkeit brauche als viel mehr,
also im Prinzip so ein logarhythmisches Verhalten jetzt von Skalierungsfaktoren,
die da so mit drin sind.
Gut, zur Historie oder zu irgendwelchen Beschreibungen dazu, ich glaube easy 154,
also hier nochmal Verweis auf die englischen Wikipedia oder als echten Tipp,
in der Literatur von Goldberg, what every computer scientists to know about floating point.
Ist also ein Paper, was also eine gewisse Berühmtheit erlangt hat,
was zwar jetzt also nicht zwingend neu ist,
sondern also irgendwie 29 Jahre alt ist,
was ich aber wirklich jedem nur empfehlen kann,
weil da also wirklich nochmal ein bisschen drin steht,
also jetzt mit diesen Fließkomma-Aret-Meeting,
Fließkomma-Berechnung, worauf man vielleicht also auch achten sollte,
weil auch bei seinen eigenen Berechnungen,
die man jetzt also vielleicht irgendwo macht,
beziehungsweise die man also jetzt irgendwo programmiert.
Da kann es dann eben auch immer noch sein,
dass man da also in irgendwelche Fallen reinläuft und dann eben im Prinzip aufgrund von Rundungsvarianten,
ich also irgendwie meine Ergebnisse entsprechend ungenau mache,
beziehungsweise dann eben zu falschen omerischen Ergebnissen gelange.
Ich könnte, wie gesagt, deswegen,
da sollte man im Laufe deines Studiums vielleicht also
auch nochmal reingeguckt haben
Ja, das, was ich hier jetzt nur vorstellen würde,
sind also diese quasi Standardformate, nämlich einmal ein 32-Bit-Format,
da spricht man auch immer von einfacher Genauigkeit oder Single-Presition in den Programmiersprachen
wird das dann also typischerweise immer als Float bezeichnet oder eben ein 64-Bit-Format,
doppelte Genauigkeit, Double Precision oder Double.
Und das Format ist jetzt eben hier so aufgeteilt,
dass das von diesen 32-Bit beispielsweise dann das erste Bit,
das Vorzeichen ist,
dann habe ich acht Bit für einen Exponenten Und dann bleiben noch 23 Bit für die Mannschaft.
Bis danach. Beim 64-Bit-Format sind dann entsprechend Exponent und man testet größer gewählt.
So, und bei den Zahlen sieht das dann eben so aus,
dass die Mantise eine normalisierte Dualzahl ist. Das heißt,
die ist dann eben größer gleich eins und kleiner zwei,
was formal gesehen dann eben heißt,
sie hat eben genau eine Eins als Vorkommastelle und diese Eins
wird dann eben auch nicht mitkodiert.
Und dadurch gewinne ich dann eben nochmal zusätzlich ein Bit in
der Mantise
An der Anzahl der möglichen Stellen mit drin.
Das ist das, was sie eben schon gesagt hatte.
Der Exponent selber wird dann kodiert in so einer Access-Darstellung,
und zwar beim 32-Bit-Format, als Access 127. Das heißt,
das wäre dann nichts anderes als eine Dualzahl positiv interpretiert,
von der muss ich dann 127 abziehen, beziehungsweise beim 64-Bit-Format dann eben 1023 abziehen.
Diese Exponenten sind dann eben so gewählt,
dass ich eben die Werte Habe von 1,
wer es größter wird, hier minus 1. Das heißt,
ich habe hier immer mindestens eine 1 und mindestens eine Null
mitrennen und Exponentenkodierung aus lauter Nullen oder lauter Einsen werden jetzt nämlich benutzt,
um die Sonderwerte 0, Nord und Nambar und Infinity zu kodieren.
Das heißt, die werden also jetzt direkt anhand des Exponenten entschieden,
wenn der Exponent jetzt eben in diesem Bereich hier liegt,
habe ich eine normalisierte Dualzahl und würde dann eben entsprechend die Mantise interpretieren und meinen Exponenten dann eben passend ausrechnen.
So, hier nochmal für diese beiden unterschiedlichen Formate,
wie das aussieht, ein Vorzeichenbett,
hier die 8 beziehungsweise 11 Bild für den Exponenten und die 23 beziehungsweise 52 Bild für die Mantise,
dann eben der Bereich der darstellbaren Zahlen für den Exponenten,
die kleinste normalisierte Zahl,
Das war es dann ungefähr so als größte normalisierte Zahl darstellen kann und welchen Dezimalbereich das ungefähr entspricht.
Und mit nicht normalisierten Zahlen kommt man dann eben noch zu entsprechend dann kleineren Zahlen,
die ich da dann noch mit darstellen kann.
Sowas hier, also wenn ich jetzt hier solche Tabellen habe, solche Werte,
keine Angst, das wird in der Klausur nicht abgefragt.
Also was muss jetzt nicht zwingend auswendig lernen?
Man sollte wissen, wie so ein Fließkomma-Format aussieht
Und es wird dann nahe sagen, Übungsaufgaben geben,
wo wir dann also mit Fließkomma-Formaten so ein bisschen was machen und rechnen,
aber eben hier solche grundsätzlichen Sachen, also hier irgendwie so eine Tabelle auswendig lernen,
das kann man nachschlagen, da muss man jetzt also nicht zwingend was Ganze machen. Ja,
wie gesagt, sorry Fließkomma-Formate, da zu finden sich,
das ist jetzt also auch hier wieder aus diesem interaktiven Skript von Klaus Vornaide genommen,
dann auch unterschiedlichste Beispiele im Netz wieder es aussieht,
wie man das macht,
wo man dann also quasi jetzt über irgendwelche Applets sehen kann,
wenn ich jetzt, also hier irgendwie sowas wie eine AGJ-Zahl aussehe,
wie die dann als A-Treppe easy 154 Fließkomma-Zahl aussehen würde,
entweder als Short, also in der 32 Bett oder als Long in der 64-Bit-Darstellung,
nicht wo ich dann eben hier Vorzeichen bin,
Exponent und die Mantiste habe und diese implizite 1 vor
dem Komma,
die dann eben noch mit hinzukommt
Das kann man da dann eben in solchen Formaten oder in
entsprechenden Applets dann also irgendwo eingeben.
Und sie dann eben irgendwo so eine Umrechnung. Was man
hier dann also auch schon irgendwie so ein bisschen mit sehen kann,
hatte ich auch schon mal ein paar Mal gesagt,
wie sieht das jetzt also mit der Anzahl der Stellen aus,
die man dann also irgendwie hat oder erreichen kann nicht.
Also hier sagt man also bei Double hätte ich dann entsprechend
für die Mantesse ja 32,
52 P zur Verfügung plus dieses Implizite wird jetzt für die
1 nicht das entspricht ungefähr so
16, Dezimalstellen an Genauigkeit. Das heißt,
wenn die jetzt also Zahn habe, die jetzt eine größere Genauigkeit haben,
da müsste dann eben entsprechend was abgeschnitten werden.
Nicht diese Umrechnung hier von diesen 53-Bit-Endizimalstellen kann man einfach jetzt also aufgrund der unterschiedlichen Zahlenbasen machen,
wenn ich mir überlege, wie sieht das jetzt,
also beim Dezima-System im Verhältnis zum Dualsystem aus,
dass man da dann eben ungefähr diesen Faktor 3 mit drin hat,
um dann also hier raus die Dezimalstellen oder umgekehrt auszurechnen.
Gut, aber kommen wir jetzt also zu den Beispielen, wie jetzt solche Fließkommazahlen aussehen.
Also hier als Beispiel jetzt immer gewählt für einen 32-Bit Flotformat.
Die Zahl selber ist jetzt immer so gemauert,
dass ich sage, ich habe hier also mein Vorzeichen-Bit.
Ich definiere das minus 1 hoch S. Mal zwei hoch.
Dann habe ich den 8-Bit-Exponenten in Exzess 127 Darstellung. Das heißt,
an der Stelle müsste ich jetzt eben rechnen, Dieser acht Bett als positive Zahl, minus 127,
dann habe ich eben meinen Exponenten und für die Mantasse gilt,
ich habe hier meine 23 Bit Nachkommastellen und dann eben hier bei einer normalisierten Zahl 1, noch davor stehen. Das heißt,
diese Fließkommazahl, 1, 1, ich danke dir die 7,0,
3,1 und dann also hier entsprechend nochmal 20 holen würde als Dezimalzahl umzurechnen sein,
als mit dieser eins habe ich hier ein negatives Vorzeichen für den Exponenten,
wählen jetzt also hier die nächsten acht Bits betrachtet,
das ist ein Wert von 128, minus 127,
demzufolge ist, also jeder Skalierungsfaktor dann zwei hoch eins,
also zwei und hier für die, jetzt der Mantesse,
habe ich dann eben die implizite eins vor dem Komma Hätte dann hier nach dem Komma als erstes Bit 2 hoch minus 1,
also 0,5, 2 hoch minus 2,
2 hoch minus 3, müsste dann also rechnen,
mal 1 plus 9,5 plus 9,5 plus noch um 1,
2,
5 und das Ganze wäre dann als Zahl eben minus 3,75 hier jetzt in ihrer entsprechenden Fließkommadarstellung.
Zweites Beispiel 0, ich habe eine positive Zahl, hier als wäre 254 minus 127. Das heißt,
der Skalierungsfaktor jetzt, diese Halbbluggerithmischen Zahl,
wäre dann eben 2 hoch 127 und hätte dann eben hier auch wieder die implizite 1,
die ja jetzt noch davor steht,
plus und dann hier als Nachkomma stellen,
2 hoch minus 4, 2 hoch minus 7,
2 hoch minus 8. Ich würde das dann dementsprechend ausrechnen und hätte damit dann als Ergebnis dann eben so was wie diese Dezimalzahl.
Ja, hier auch noch zwei weitere Beispiele, wo jetzt
eben hier zum Beispiel jetzt nochmal eine sehr kleine Zahl dargestellt wird.
In diesem Fall auch eine negative Zahl. Hier für den
Exponenten habe ich eins, minus 127, das heißt zwei hoch minus
126. Die Mantise ist hier komplett null. Ich habe natürlich
immer noch die eins vor dem Komma hier mit drin,
die implizit jetzt bei dieser Darstellung mit drin ist
Anschließend dann Baudanolen und hätte dann ihn hier als Ergebnis dann
so was wie minus 1,175 und so weiter,
mal 10. minus 38. Nicht, dass also die Art und Weise,
wie man jetzt solche Fließkomma zahlen, entsprechend umrechnet.
Ja, wie kann man jetzt mit den Fließkomma-Zahlen rechnen?
Wenn ich jetzt als einfachste oder erste Operation sowas wie eine Adition machen möchte,
dann macht man das also folgendermaßen,
dass ich also zum einen den betragsmäßig kleineren Sumanten entsprechend skaliere,
bis die Exponenten identisch sind.
Bei diesem Skalieren, das heißt dem anpassenden Exponenten,
das entspricht dir jetzt eigentlich genau dem, was ich hier an dieser Stelle mache,
dass ich dann nämlich um diesen Exponenten anzufassen, passen,
das Komma verschiebe.
So, hier sind wir nicht. Das heißt,
dem zuvor wird dann dabei Das Komma in der Mantasse,
passend verschoben. Dadurch kann es natürlich sein,
dass aufgrund von begrenzten Zahlen Darstellung in der Wortbreite sich gegebenenfalls
die Genauigkeit in diesem Clan-Ansumanten natürlich dann entsprechend verringert,
weil dann also nicht mehr alle Stellen berücksichtigt werden.
Anschließend werden dann die Mantassen addiert, beziehungsweise wenn es um eine Subtraktion geht,
wo dann eben eine Subtraktion ausgeführt, in dem Fall dann die Addition Zweierkompliments.
Und anschließend wird dann eben das Resultat gegebenenfalls, also auch noch normalisiert.
Diese Abläufe reden wir also auch noch in den Übungen kennenlernen,
vorher aber hier natürlich noch mal erstmal ein Beispiel,
wo man sieht, wie das jetzt also prinzipiell aussieht.
Also wir haben ja als Zahl 9,725 mal 10 Uhr 7
plus 3,016 mal 10 noch 6. Die sollen jetzt addiert werden.
Im ersten Schritt werden die Exponenten angeglichen. Das heißt,
Start 10 auf 6 wird dann eben auch 10 Uhr 7 draus gemacht.
Und in der Mante ist er entsprechend das Komma kassend verschoben.
Jetzt sieht man schon, dass ich hier also an der Stelle statt drei,
vier kommenden Nachkommastellen habe. Und wenn ich also jetzt hier eben auch entsprechend begrenzte Wortbreiten hätte, kann es eben sein, dass jeweils verschwindet. So,
dann mathematisch gesehen gilt dann das Destributivgesetz,
das heißt den Exponenten ziehe ich entsprechend raus und habe dann einfach eine ganz normale Beratung Rechnung auf den Mantissen auszuführen,
wie sie im Prinzip beinahe gebrochen rationalen Zahl gebrochen rationalen Zahl stattfindet,
wo ich dann eben aus Ergebnissen diesem Fordern,
also 10,0, 2,6,6 erhalte,
was man hier dann schon sieht durch diese Addition kann es sein,
dass sich also das Komma jetzt also hier auch nochmal wieder verschiebt und ich dann gegebenenfalls,
also mein Ergebnis nochmal normalisieren muss,
damit ich dann eben auch wieder jetzt nur eine Stelle vor dem Komma erhalte,
in dem Fall hätte ich dann eben diese Zahl mal 10 hoch 8.
So und jetzt sieht man nämlich genau diesen Effekt
mit dieser Rundung angenommen Ausgangszahlen sind mit 3-8-Komma-Stellen.
Das Ergebnis soll jetzt auch mit rein nach Komma stellen.
Nur angezeigt werden oder dargestellt werden, dass dann eben entsprechend aus diesem 1,00266,
dann also ein 1,003 gemacht wird, wodurch,
dass ich dann eben hier Rundungseffekte mit habe. So,
und das führt dann nämlich dazu, dass man sagen kann,
okay, das Ergebnis ist gegebenenfalls also nicht informationstreu,
weil ich dann eben bei dieser Berechnung aufgrund dieser Rundung und der Darstellung Informationen verliere,
nämlich in diesem Fall jetzt hier Nachkomma stellen oder je nachdem,
wie das ausgegebenenfalls hier, also bei der Anleitung bei Exponenten dann eben auch schon stellen.
Ja, dazu kann man jetzt bei Addition bzw. Subtraktion von Laikomma zahlen eigentlich zwei unterschiedliche Effekte unterscheiden,
nämlich zum einen jetzt, wenn die Exponenten hier sehr stark unterschiedlich sind,
dann kann es eben vorkommen,
dass die kleinere Zahl also wirklich so weit skaliert wird,
dass von der Mantise keine oder fast keine gültigen Retswerke übrig bleiben.
Das heißt, die kleinere Zahl geht verloren und das Ergebnis ist,
in Bezug darauf dann eben entsprechend ungenau. Beispiel hatten wir jetzt eben schon,
als ich ganz am Anfang mal in dem zweiten Kapitel da
die Eigenschaften der Verzahnsysteme schon mal kurz ein bisschen beleuchtet hatte,
dass ich jetzt eben sage, wenn ich als Zahl habe,
1,0 mal 10 hoch 20 plus wie 3,14159 dann würde das Ergebnis jetzt eben,
wenn ich da jetzt nicht ansprechende andere Zahlenformate nehme,
dann eben immer Harrison 1,0 mal 10 hoch 20.
Und das, was ich hier hinzu agiere, geht verloren.
Als zweiten Fall kann man dann eben auch noch unterschieden und erscheinen,
was passiert, wenn die Exponenten der Zahlen gleich sind und
die Mantisen fast gleich sind. Das heißt also,
ich in den Mantisen jetzt wirklich nur an einigen wenigen Stellen,
am besten zusammenhängen und irgendwo relativ weit hinten,
es Unterschiede gibt
Dann sieht das eben so aus, dass ich,
beispielsweise, wenn ich jetzt diese Zahlen voneinander so karriere,
sich eigentlich fast alle Bits in der Manthisse auslöschen und eben wirklich nur einige wenige Bits überbleiben,
die dann aber mal ein Ergebnis bestimmen,
was dann auch im Resultat wieder heißt,
dass auch dieses Ergebnis dann eben wieder nur noch sehr wenige Bits an effektiver Genauigkeit hat.
Das heißt, das sind dann Unterschiedliche,
aber eben immer aufdrehende Effekte bei der Berechnung mit Fließkummerzahlen.
Ja, wie sieht das mit der Multiplikation aus?
Auch da einfach ganz normal hier unsere Rechenregeln,
wie wir sie also normal also auch aus dem Dezimarsystem kennen.
Und zwar muss ich da dann Mantissen und Vorzeichen multiplizieren,
Exponenten agieren, die Multiplikation der Mantisse dann dementsprechend die Multiplikation von
gebrochener rationalen Zahlen für das Vorzeichen als Multiplikation kann ich das.
Also da handelt es sich ja nur um ein,
bitte nämlich null oder eins, was dann kodiert.
Das also entsprechend sehr einfach machen,
berechnungstechnisch lässt sich das also durch eine einzelne triviale Schaltung realisieren,
sogenanntes Exklusiv oder Gatta werden wir später noch kennenlernen,
was damit gemeint ist.
Jedenfalls als Ergebnis für die Multiplikation kann man eben immer sagen,
dass die Vorzeichen, multipliziert werden,
die Mantisen multipliziert werden und die Exponenten agiert werden.
Das sind also alles Operationen, die da entsprechend dann sind.
Und was dann natürlich auch wieder stattfinden muss,
ist das für das Ergebnis, das Ganze dann normalisiert wird.
Die Vision gilt dann eigentlich entsprechend,
dass sich da dann eben nur die Exponenten voneinander subtrahiere und
hier dann eben eine Division für Vorzeichnung und Mantisse mache
Ja, jetzt hatte ich auch schon gesagt,
es gibt in diesem Datenformat A-Treppe eSimon54 dann eben auch noch
neben der Kodierung der Null, auch noch spezielle Werte,
mit denen ich unendlich große Zahlen beziehungsweise sie ist Nord und Number beschreiben möchte.
Damit ist es dann eben möglich in atometischen Berechnungen oder in Ausdrücken
zu arbeiten und Werte jetzt miteinander zu verknüpfen ich muss also jetzt nicht nach jeder einzelnen Operation,
also Aditionen, Multiplikationen, Subtraktionen prüfen,
ist das Ergebnis in dem und dem Bereich,
sondern ich kann damit also erst mal meinen gesamten Ausdruck bilden,
damit rechnen und hinterher dann eben beispielsweise über eine entsprechende Fehlerbehandlung dann eben gucken,
was passiert dort.
Infinity unendlich, das ist eben ein spezieller Wert,
der ihm in das unendlich groß,
also in die sehr großen Zahlen hineinreicht,
sowohl in den positiven als auch den negativen Teil
Würde ich eben erhalten. Zum einen war die Vision durch
Null. Oder wenn ich jetzt eben hier sowas berechne,
wie den Arkus Tang jetzt von Pi.
Nord the Number, das ist dann eben auch ein spezieller Wert,
womit dann ungültige Operationen kennzeichnet werden.
Sprich, wurde es aus einer negativen Zahl zu ziehen,
weil dann würde ich also jetzt im Prinzip die marginäre Zahl an und zahnargig gehen müssen.
Oder Arkus Sinus von zwei, wenn ich hier irgendwie unendlich durch unendlich teile oder sowas.
Nicht, dass wir dann alles Beispiele, wo Hier sowas bei rauskommt.
Wie ist das Ganze codiert? Dazu kann man jetzt eigentlich
ihr folgendes Schema nehmen. Und zwar das,
was wir bislang kennengelernt hatten, sind ja normalisierte Zahlen,
wo der Exponent eben größer als null ist.
Das heißt, nicht der Vektor aus lauter Nullen und kleiner
als die größte darstellbare Zahl, also der Vektor aus lauter Einsen.
Und ich war eben hier für die Mantis ein beliebiges Bettkoster habe.
Die Null wird jetzt codiert dadurch, dass ich
den Exponenten gleich null habe und die Mantise gleich null.
Unendlich wird codiert dadurch,
dass ich den Exponenten gleich der dem Vektor aus lauter Einzeln
habe und die mantise gleich null und die ist not an number
ist dann eben hier in Vektor aus Einzeln und eben hier irgendein Bitmuster,
was dann aber eben logischerweise mindestens einer Eins enthält.
So und neben den normalisierten Zahl gibt es dann eben jetzt hier eben für diesen Fall,
wo ich mich dann also in die Null oder in Richtung der Null begebe bei den sehr kleinen Zahlen,
dann eben noch denormalisierte Zahlen, die dann eben dadurch kodiert sind,
dass der Exponent gleich Null ist und ich dann eben hier für die Mantiers noch irgendeinen Wittenmuster habe und eine demormalisierte Zahl,
die hat dann eben nicht mehr dieses implizite 1, irgendwas,
sondern hier in den Wittenmuster habe ich dann eben 0,
und dann eben hier irgendwelche Nachkommastellen, je nachdem, wie weit ich also hier mit meinen 23 bzw. 52 Bit dann eben noch komme.
Ja, und das also zu den unterschiedlichen Formaten,
die dann also in diesem Altra, wo easy 154 mit drin sind,
mit unendlich kann man dann eben teilweise dann auch noch rechnen,
das heißt also null durch unendlich,
wo dann eben wieder null ergeben, mit Nord der Namen war,
wie gesagt, was ergibt sich jetzt eben aus irgendwelchen,
nicht die mathematisch definierten Operationen, eben woraus raus,
negativen Zahlen und so weiter,
wo ich ein anderes Zahlensystem brauche und so weiter.
Operationen mit Nord der Namen war liefern eben typischerweise als Ergebnis auch immer wieder in Nord the Number Operationen mit unendlich,
ist jetzt davon abhängig, was ich damit rechne, was dabei rauskommt. Hier auch nur so einige Beispiele,
wo man jetzt sieht, also was im Prinzip jetzt,
also aus diesem Fließkomma-Berechnung rauskommt, also wenn ich hier teile,
sowas wie null durch null, würde es eben not a number ergeben,
wenn ich irgendwelche normalen Zahlen durch null teile,
würde ich dann eben im entsprechenden unendlich oder minus unendlich kommen bekommen,
das heißt also hier arbeitet man eigentlich mit diesem Grenzwert, wenn ich irgendwas durch unendlich teile, Würde ich dann eben entsprechend Nola als Ergebnis erhalten.
Hier sieht man dann, wie dann eben mit unendlich gerechnet werden kann,
was dann eben passiert, wenn ich jetzt,
also hier jetzt irgendwelche anderen Operationen mache, also sprich,
wo Slows 2, Wurzelhaus, minus 1,
was dann eben beispielsweise Nord in Number liefert,
wo man ein bisschen aufpassen muss, ist bei Vergleichsorperationen,
das heißt, wenn ich vergleiche,
ist Nord in Number live, Nord in Number,
dann liefert das als Wuschenwert eben ein Falls,
das heißt, die bisschen nicht zwingend gleich sein,
hat eigentlich jetzt auch wieder so ein bisschen technische Gründe,
weil ein Hotel Number dann eben wirklich sowas wie,
oder dieser Vergleichsapparat, sondern eben sowas wie ein Bitweisenvergleich macht,
die Vektoren sind gleich,
hier konnten sie die Bitmuster dann aber eben unterscheiden und diese Bitmuster wurden eben durch irgendwelche vorherigen Operationen generiert,
wo ich dann also hier raus aus irgendwelchen Operationen,
so ein Nord- und Number generiert habe und die müssen in dem Falle dann also nicht Bitweise identisch sein.
Also das zu der Art und Weise, wie ihr dies Falls kommt,
Auch so was wie Abfragen ist Infinity größer als Nordrhein-Number.
Auch das liefert False, weil also auch da muss man sagen, ist eigentlich nicht definiert und irgendwo unsinnig.
Also da muss man so ein bisschen gucken. Gut,
findet sich eigentlich dann in den Beschreibungen zu programmiersprachen,
typischerweise eben auch, wir haben ja jetzt mit Fleece-Kommerzahn rechnet,
was man vielleicht dort dann eben auch beachten müsste in Bezug auf seine Kodierung. Und wie gesagt,
da hatte ich ja also schon dieses Paper von Goldberg empfohlen,
weil, wie gesagt, vieles,
was man so anfallen oder Problemen in seiner medirischen Ausdrücken haben kann,
wenn man jetzt mit fies Komma Zahn rechnet,
was dann also hier nur teilweise abgebildet ist,
ist dann eben dort noch mal so ein bisschen beschrieben,
dass man dann eigentlich so ein bisschen weiß,
was da passiert.
Ja, in dem Zusammenhang möchte ich jetzt eben noch auf die Genauigkeiten,
die man bei den Berechnungen und Admirischen Operationen hat, eingehen.
Dazu gibt es als Begriff ULP, das steht dann für
Unit and the Last Place und beschreibt im Prinzip die Differenz zwischen zwei Gleitkomma-Zahlen,
die jetzt einer gegebenen Zahl am nächsten liegen.
Das heißt, wenn jetzt also zwei Zahlen habe,
die sich an der niederwärtigsten Stelle der Mantis unterscheiden,
dann wäre das ULP dann genau das,
was ich also im Prinzip dann also an Zahlen dazwischen habe,
die dann eben entweder auf die eine oder auf die andere Zahl,
also in Richtung auf einer Null oder in Richtung auf einer Ahrens
Was dann zu betrachten wäre. Damit hat man dann ein Maß für die erreichbare Genauigkeit. Und dieses Maß wird jetzt eben benutzt,
um bei elementaren Operationen, also Addition, Subtraktion,
Multiplikation, Division zu sagen,
wie genau diese Berechnung jetzt eben in Bezug auf den numerischen Wert sind,
wenn ich sie dann eben in einem bestimmten Zahlenformat, also in dem Fall jetzt,
also in diesem Alttrap, wie die 754 Zahlen vom Markt durchführe,
in der Standard fordert eben, dass da eine Genauigkeit von 0,5 ULP ist.
Das heißt, dass ich dann eben auch wirklich mit meinem Ergebnis bis auf das Letzte wird richtig gerundet,
dann genau auch Lande, weil, wie gesagt, das ist etwas,
was wir hier schon gesehen haben, als ich vorhin,
jetzt muss ich hier die Folie mal kurz suchen, ja,
also diese Addition vorgestellt habe, wo man dann eben sieht,
also es kommen da im Prinzip ja zwei Effekte mit rein,
zum einen, dass beim Angleichen Exponenten jetzt hier bei dieser Addition ich dann also auf einmal hier vier und nicht mehr drei Nachkommastellen habe und dann kommt er noch hinzu,
dass also hier bei dieser Berechnung wo ich dann,
also gegebenenfalls, also auch noch irgendwelche Normalisierung mit habe,
dann also hier diese Zahl, also nochmal weiter wachsen kann.
Und dann wird eben entsprechend gerundet. Und je nachdem,
wie viele zusätzliche Stellen ich jetzt eben in diesen Zwischenberechnungen mit vorsehe,
erhalte ich dann eben unterschiedliche ULPs, weil es man dann eben,
wenn ich das Beispiel jetzt schlecht konzentruiere, passieren kann,
dass ich eben hier an dieser Stelle schon irgendwo falsch runde oder was abschneide,
was dann eben zu einem Ergebnis führt,
wo dann also in diesem Fall dann eben sowas wie meinetwegen jetzt 1,002 rauskommt,
was dann eigentlich nicht dem numerischen Ergebnis und nach richtigen Rundungen entsprechen würde.
Also das ist das, was auch in diesem Standseite,
also hier mit diesem ULP gemarkt ist,
neben dem Basisoperation garantierten eigentlich dann Softwarebibliotheken, beziehungsweise mathematische Bibliotheken,
die man mit Nords dann eben auch noch entsprechende Genauigkeiten,
also auch noch für andere Funktionen, also Luca Rhythmusberechnung,
Sinus, Cosinus und so weiter.
Teilweise kann man das dann also hier für ein Beispiel Fitcher,
aber dann eben auch noch mit Abfragen jetzt für die Zahlen,
wie groß daran spannend ist,
ULP ist
Ja, ansonsten das Thema Rundung, kann ich auch nur sagen,
ist also nicht ganz triviales Problem. Nicht numerische Mathematik,
wie viele Zusätze hier Schutzstellen brauche ich, wie macht man das Ganze? Glücklicherweise,
keine Ahnung, da ist das auch mal sagen,
wenn wir jetzt nicht selber unsere eigene Arrathmetik,
unsere eigenen Zahnsysteme definieren,
dann muss man sich da jetzt also nicht Freitag auseinandersetzen,
beziehungsweise bei dem,
was wir typischerweise mit benutzen oder mit einsetzen,
also vordefinierte Bibliotheken-Formate wie die SA-Treppe wie die 754 Fließkomma-Format
Da ist das Ganze dann dementsprechend schon passend definiert worden.
Ja, abschließend werde ich jetzt noch ein bisschen was zu dem Begriff der Maschinenworte sagen.
Da geht es jetzt eben wirklich darum, dass man guckt,
wie die Hardware, der Rechner, die CPUs,
jetzt die unterschiedlichen Datentypen verarbeitet, beziehungsweise mit welchen Bitbreiten dort intern eben gearbeitet und gerechnet wird.
Weil wir haben ja schon gesehen, bei den Fließkomma-Formaten dass
beispielsweise 32 Bett oder 64-Bit-Formate definiert sind. Typischerweise sieht es eben so aus,
dass die Hardware erstmal nativ für eine bestimmte Wortlänge optimiert ist,
kürzere oder längere Werte können logischerweise auch bearbeitet werden,
dann aber gegebenenfalls einfach in mehreren Teilschritten,
so kann eben ein Prozessor, der jetzt eigentlich für 8-Bit ausgelegt ist,
natürlich also auch irgendwelche 64-Bit Datentypen verarbeiten,
braucht dafür dann aber eben relativ viele Talschritte und es werden eben irgendwelche Zwischenergebnisse lernen, dazwischen gespeichert.
Ja, das, wo wir uns heutzutage eigentlich bewegen,
jetzt im PC, im Desktop-Bereich, da ist es eben so,
dass wir da eigentlich jetzt seit mehreren Jahren 64 Bit-Rechner haben.
Bis vor einigen Jahren war das eben 32 Bit-Rechner.
Und das war dann eben erstmal die,
in Anführungszeichen,
optimale Wortlänge für Injure-Werte
Und der adressierbare Speicher. Das heißt, das,
was dann noch ein Hauptspeicher in dem Rechner hatte,
der wurde bydriser adressiert und man hatte dann eben für die Adressen 2
hoch 32 zur Verfügung und konnte dem zur Folge dann also 4 Giveawait mit einzeln adressieren.
Gut. Heutzutage haben wir es eben 64 Bit-Rechner, adressierbarer Speicherbereich ist deutlich größer,
gut und 4 GB sind jetzt natürlich also auch nicht mehr das,
was man jetzt also als Speicherausstattung jetzt also für neue Rechner Zum Beispiel einsetzen würde. Ja,
daneben gibt es da natürlich also auch noch gerade im Bereich der eingebetteten Systeme,
wo ich also irgendwie kleine Steuerungsrechner habe,
die jetzt also beispielsweise in der Kaffeemaschine jetzt,
also irgendwie die Steuerung sagen, auch deutlich kleinere Wortbreiten,
also 16 Bild, 8 Bild, was auch immer,
weil da kann man sagen, gut,
also da interessiert mich, läuft das Wasser,
läuft die Pumpe und wie viele Schritte punkte ich jetzt durch und da genügen dann eben teilweise eben auch 8 Bett oder 16 bezahlen.
Da will man also auch entsprechend günstige Hardware haben,
die also nur irgendwie ein paar Cent kosten darf,
um da also jetzt einfach fest, diese Steuerung zu machen,
hat da dann dementsprechend kleinere Rechnungensysteme mit drin.
Ja, hier ist jetzt also einmal für,
also auch nicht mehr so ganz taufrische Architekturen gezeigt, wie das dann also bei den Datentypen aussieht.
Und zwar habe ich hier jetzt also einfach mal so elementare Datentypen jetzt,
also Ostsee, beziehungsweise sowas wie Pointer, nicht, dass es dann eben als Beispiel dann also für eine Speicheradresse, der typische Wert. Und das jetzt hier also für unterschiedliche Rechnerhardware,
Deck Alpha war, ist im Prinzip also auch schon deutlich länger her,
Anfang der 90er Jahre, der erste 64-Bit-Rechner, der,
oder mit Prozessor, der dann also rausgekommen ist,
nicht dann typische 32-Bit-Rechner oder Intel, X86,
aber auch als 32-Bit-Architektur, nicht nur da sieht man also hier,
dass sowas wie Enteger-Werte hier dann also immer jeweils vier Wald umfassen,
ein Zeichen typischerweise, ein Waldshort, dann eben vor kurzem Integer,
dann die Harrys, die beiden Fließkomma-Formate,
Flot und Double, was man dann sieht, ist,
dass dann teilweise auf Internarchitekturen schon relativ früh,
also auch noch längere Fließkomma-Formate definiert worden sind,
sowas wie Long Double,
die dann also zehn oder zwölf Wald umfassen und hiermit Void,
also dann so ein Zeiger, habe ich dann eben hier,
sieht man eigentlich sehr gut,
hier jeweils vier Wald bei den 32 Architekturen oder acht Wald
bei einer 64-Bedarchitektur
So, und was man jetzt hier eben schon sieht,
ist, dass teilweise die Datentypen jetzt also aus dem Programmiersprachen,
je nachdem, also auf welchem Rechner ich bin,
auch mit unterschiedlich viel weit dargestellt werden.
Bei neueren Sprachen und aktuelleren Sprachkonzepten,
also auch schon bei Java, ist es eben so,
dass es da solche kruden Unterschiede nicht gibt,
sondern da kann ich in mir also wirklich immer sicher sein,
dass die entsprechenden Datentypen unabhängig von der zugrunde liegenden Hardware
identisch dargestellt werden
Sprachen wie jetzt eben beispielsweise C hier, sieht man also schon die Unterschiede.
Und noch schlimmer wird das, wenn man jetzt also guckt,
also hier auch so eine Referenz, also in Paper,
was es da also auch mal regelmäßig und aktualisiert gibt,
wenn man sich das jetzt also anguckt,
sind die Hardware-Abhängigkeiten jetzt nicht nur vom Prozessor abhängig,
sondern teilweise also auch vom Betriebssystem oder vom Compiler.
Und zwar habe ich jetzt hier für die Sprache C 16 Bit,
32 Bit und 64 Bit Architekturen hier jetzt mit unterschiedlichen Compilern und unterschiedlichen Betriebssystemen,
also sprich Antil Compiler unter Linux, Antil Compiler unter Windows.
Das ist ein sehr anderer Compiler, die unter Linux laufen oder
eben der Microsoft Compiler, logischerweise dann also auch unter Windows.
Und da sieht man dann jetzt eben hier für unterschiedliche Datentypen,
NC, wie und mit welchen Wortbreiten,
die jetzt also hier abgebildet werden und gerade dann eben bei solchen
etwas spezielleren Formaten wie Long Double gibt es da also doch wirklich eklatante Unterschiede.
Was ich dann also auch immer vergleichsweise ernüchternd finde,
ist, wenn man sich dann eben anguckt,
dass ich also eben abhängig auch vom Betriebssystem dann also hier eben schon sagen kann,
je nachdem, unter welchem Betriebssystem ich arbeite,
habe ich dann also hier auch sehr stark unterschiedliche Varianten.
Gut, glücklicherweise ist das ja nun bei anderen Sprachen nicht so,
aber auch das etwas,
was man immer so ein bisschen im Hinterkopf haben sollte,
Kinderprogrammierung, in welcher Sprache arbeite ich,
auf welchem System Muss meine Anwendung portabel sein oder welche Effekte können da dann eben vielleicht noch mit reinspielen,
wenn ich dann das Ganze jetzt also auf andere Systeme und so weiter rumsetze.
Ja, damit sind wir jetzt an dieser Stelle mit dem
Kapitel Ziffern und Zahlen fertig. Und in dem nächsten Kapitel,
was allerdings ein bisschen kürzer ausfallen wird,
werde ich da nochmal ein bisschen spezieller,
war es eigentlich zu der aren Metik, sagen,
sprich, wie wird mit den Zahlen,
die wir jetzt hier kennengelernt haben,
also mit Entager und Refiece-Kommazahlen gerechnet.
Ja, so viel dazu und tschüss,
bis zum nächsten Mal