\documentclass[10pt,loesungseite]{schuleab}
\usepackage[utf8]{inputenc}
\usepackage{schulinf}

% Dieses Dokument ist in der Zusammenarbeit von Informatikreferendaren und
% ehemaligen Informatikreferendaren der Studienseminare (heute ZfsL) Arnsberg,
% Hamm und Solingen entstanden.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% http://ddi.uni-wuppertal.de/material/materialsammlung/
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter  http://www.ctan.org/pkg/schule
% zur Verfügung.

\usepackage[pdfauthor={Referendare der Informatikfachseminare Arnsberg, Hamm und Solingen}]{hyperref}
\includexmp{lizenz}
\cclizenz{byncsaeu}
\footerQRLink{materialsammlung_qr_url.pdf}

\svnid{$Id: ab_03_gleitkommazahl.tex 626 2014-05-22 21:36:50Z pieper $}

\dokName{Gleitkommazahlen im Binärsystem}
\jahrgang{9}

%Speziell
\usepackage{units}

\begin{document}

\section*{Gleitkommazahlen}
Immer dann, wenn ganze Zahlen nicht ausreichen, wird heute im Computer mit Gleitkommazahlen gearbeitet. Sie werden so genannt, weil bei ihrer internen Darstellung das Komma immer passend verschoben wird, so dass sie der Norm \( \pm m \cdot 10^{e} \) entspricht. Bei der Mantisse \(m\) handelt es sich dabei um eine Kommazahl im Bereich zwischen 1 und \( 9,\overline{9}\). Die 10 bezeichnet man als Basis und \(e\) als Exponent.

So wird z.\,B. die Lichtgeschwindigkeit \((299\,792\,458\,\unitfrac{m}{s})\) geschrieben als \(2,997\,924\,58 \cdot 10^{8}\,\unitfrac{m}{s}\) und ein Finger ist etwa \(1,5 \cdot 10^{-2}\,\unit{m} \) breit.

\minisec{Aufgabe}
Forme folgende Zahlen um, so dass sie der Norm mit der Basis 10 entsprechen und gib an, was genau der Exponent und die Mantisse sind:

\begin{smallenumerate}
	\item 883,24 
	\item 0,038\,2 
	\item -145\,000\,000 
	\item 39,302 
	\item  -0,000\,003\,39 
\end{smallenumerate}

\subsection*{Binäre Darstellung}
Der Computer rechnet in binärer Darstellung, bei der die Basis 2 ist. Folglich ist die erste Ziffer der Mantisse immer eine 1. Bei einer 32-Bit Gleitkommazahl wird für das Vorzeichen das erste Bit genutzt. Dann stehen 23 + 1 Bit für die Mantisse zur Verfügung. Da immer das erste Bit eine 1 ist wird sie weggelassen. Es bleiben somit 8 Bit für den Exponenten.

Möchte man die Mantisse umrechnen in Dezimalzahlen, so wird folgendermaßen gerechnet:\\
\( 1 + \frac{m_0}{2} + \frac{m_1}{4} + \frac{m_2}{8} + \frac{m_3}{16} + \ldots \)

Beim Exponent wird nicht mit dem Zweierkomplement gerechnet sondern der Biaswert von 127 zum Exponenten addiert, so dass man mit einer Zahl zwischen 0 und 255 hat, einen Exponenten von -127 bis 128 darstellt.

\subsection*{Umrechnung von Binär in Dezimal}
Umgerechnet werden soll die Zahl 1 10000101 01010100000000000000000. Das erste Bit stellt das Vorzeichen da: Es handelt sich um eine negative Zahl. Die nächsten 8 Bit sind der Exponent mit einem Biaswert von 127. Sie stellen die Zahl \( 1\cdot 2^7 + 1 \cdot 2^2 + 1 \cdot 2^0 = 133\) da, was bedeutet der Exponent ist \(133 - 127 = 6\).

Für die Mantisse muss gerechnet werden: \( 1  + \frac{0}{2} + \frac{1}{4} + \frac{0}{8} + \frac{1}{16} + \frac{0}{32} + \frac{1}{64} + \frac{0}{128} + \frac{0}{256} + \ldots = 1,328125\)

Es ergibt sich daraus komplett: \(-1,328125 \cdot 2^{6} = -85 = -8,5 \cdot 10^{1}\)

\minisec{Aufgabe}
Berechne für folgende Binärdarstellungen von Gleitkommazahlen die Dezimaldarstellung:

\begin{smallenumerate}
	\item 0 01111001 11110000000000000000000
	\item 1 10001101 01110100000000000000000 
	\item 0 10010011 00100111000000000000000
\end{smallenumerate}

\loesung{
\begin{enumerate}
	\item Vorzeichen: + Exponent: \( 121-127 = -6 \) Mantisse: \(1,9375 \) Komplett: \(1,9375 \cdot 2^{-6} = 0,0302734375 \)
	\item Vorzeichen: - Exponent: \(141-127 = 14 \) Mantisse: \( 1,453125 \) Komplett: \( - 1,453125 \cdot 2^{14} = -23808 \)
	\item Vorzeichen: + Exponent: \(147-127 = 20 \) Mantisse: \(1,15234375 \) Komplett: \( 1,15234375 \cdot 2^{20} = 1208320 \)
\end{enumerate}

	
}

\subsection*{Umrechnung von Dezimal in Binär}
An dieser Stelle folgt ein Beispiel, wie man die Zahl -10,6875 in eine binäre Gleitkommazahl umrechnen kann. Dazu wird zuerst der Teil vor dem Komma nach bekanntem Schema in eine Binärzahl umgewandelt:

\( 10 \div 2 = 5 \mbox{ Rest } 0 \)\\
\( 5 \div 2 = 2 \mbox{ Rest } 1 \) \\
\( 2 \div 2 = 1 \mbox{ Rest } 0 \) \\
\( 1 \div 2 = 0 \mbox{ Rest } 1 \) 

Daraus ergibt sich, dass der Vorkommaanteil als \(1010\) geschrieben werden kann. Beim Nachkommaanteil wird immer mit 2 multipliziert. Ist das Ergebnis kleiner als 1, so wird eine 0 dafür aufgeschrieben. Anschließend wird mit dem erhaltene Ergebnis nach gleichem Verfahren weitergemacht. Ist das Ergebnis aber größer oder gleich 1, so wird eine 1 aufgeschrieben und mit dem um 1 verringerten Ergebnis weitergearbeitet. Daraus ergibt sich für den Nachkommaanteil von \(0,6875 \) folgendes:

\(0,6875 \cdot 2 = 1,375 \rightarrow 1 \)\\
\(0,375 \cdot 2 = 0,75 \rightarrow 0 \)\\
\(0,75 \cdot 2 = 1,5 \rightarrow 1 \) \\
\(0,5 \cdot 2 = 1,0 \rightarrow 1 \)

Dieses Ergebnis wird an den Vorkommaanteil angehängt. Daraus ergibt sich die komplette Zahl in Binärdarstellung als \(1010,1011 \). Durch verschieben des Kommas um 3 Stellen wird sie so normalisiert, dass vor dem Komma nur eine einzelne 1 steht. Es gilt also: \(1010,1011 = 1,0101011 \cdot 2^{3} \).

Die Berechnung des Exponenten erfolgt mit durch die Addition des Bias von 127 zur 3 zu 130, die die Binärdarstellung 10000010 hat.

Da die Zahl -10,6875 negativ ist, wird das passende Vorzeichenbit auf 1 gesetzt. Es ergibt sich also folgende Gleitkommadarstellung: 1 10000010 01010110000000000000000. Die erste 1 ist vom Vorzeichen, es folgt der Exponent und anschließend die Mantisse, deren erste 1 fehlt und bei der die restlichen Stellen mit Nullen aufgefüllt wurden.

\minisec{Aufgabe}
Berechne für folgende Zahlen die binäre Gleitkommadarstellung.
\begin{smallenumerate}
	\item 134,3125
	\item 0,515625
	\item 104000
\end{smallenumerate}

\end{document}