\subsection{Umrechnung von $b_1$ nach $b_2$ ($b_1\neq10\wedge b_2\neq10$)}
Die Umrechnung von einer Basis $b_1$ in eine andere Basis $b_2$ ($b_1\neq10$, $b_2\neq10$) findet üblicherweise über das Dezimalsystem statt, also in 2 Schritten!
Eine direkte Umrechnung wäre über die Ganzzahldivision durch $b_2$ möglich, wenn wir diese Umrechnung im System zur Basis $b_1$ durchführen würden.
Eine direkte Umrechnung ist auch in Spezialfällen möglich, nämlich dann, wenn die eine Zahl eine Potenz der anderen ist (\zB$b_1=2$ und $b_2=16$, vgl.~\autoref{tbl:hexToDez}).
\begin{itemize}[noitemsep]
\item$2^4=16$\dash 4 Stellen im Binärsystem entsprechen einer Stelle im Hexadezimalsystem
\item$2^3=8$\dash 3 Stellen im Binärsystem entsprechen einer Stelle im Oktalsystem
\end{itemize}
\begin{table}
\centering
\begin{tabular}{c|c|c}
Ziffer & Wert & Binär \\
\midrule
0 & 0 & 0000 \\
1 & 1 & 0001 \\
2 & 2 & 0010 \\
3 & 3 & 0011 \\
4 & 4 & 0100 \\
5 & 5 & 0101 \\
6 & 6 & 0110 \\
7 & 7 & 0111 \\
\end{tabular}
\begin{tabular}{c|c|c}
Ziffer & Wert & Binär \\
\midrule
8 & 8 & 1000 \\
9 & 9 & 1001 \\
A & 10 & 1010 \\
B & 11 & 1011 \\
C & 12 & 1100 \\
D & 13 & 1101 \\
E & 14 & 1110 \\
F & 15 & 1111 \\
\end{tabular}
\caption{Werte im Hexadezimalsystem}
\label{tbl:hexToDez}
\end{table}
\subsection[Andere Basen bei Computern]{Wozu das Oktal- bzw. Hexadezimalsystem in \textit{computernahen} Umgebungen?}
\begin{itemize}[noitemsep]
\item 3 (bzw. 4) Ziffern im Binärsystem entsprechen einer Ziffer im
$\Rightarrow$ 4 Stellen im Oktalsystem entsprechen 3 Stellen im Hexadezimalsystem.
$\Rightarrow$ dann ist direkt eine Umrechnung der Ziffernblöcke möglich!
Wenn $b_1^n = b_2^m$, dann entsprechen $n$ Stellen im System zur Basis $b_1$ genau $m$ Stellen im System zur Basis $b_2$\newline
$\Rightarrow$ dann auch Umrechnung über Tabelle mit $b_1^n$ oder $b_2^m$ [Bei Oktal $\Leftrightarrow$ Hexdezimal: $4096$ ($2^{4^3}$)] Zeilen möglich $\Rightarrow$ zu Groß für Erstellung der Tabelle. Deshalb wieder Umrechnung über Zwischensystem, aber nicht in das Dezimalsystem, sondern in das System zur Basis $b$ mit $b^m=b_1$ und $b^n=b_2$
\section{Bewertung Stellenwertsysteme}
\begin{itemize}[noitemsep]
\item$\oplus$ Übersichtlichkeit der Zahlendarstellung ist deutlich besser als bei Abzählsystemen (exponentielles Wachstum mit der Basis vs. lineares Wachstum mit Wert des höchstwertigen Symbols). Wird erst unübersichtlich ab $\sim b^{10}$
\item$\pm$ erhöhte Komplexität, bis das System verstanden wurde. Danach ist der Umgang mit dem System gut möglich.
\item$\oplus$ unbeschränkter Wertebereich (auch Erweiterung auf negative, nicht ganze Zahlen,\ldots)
\item$\oplus$ alle Grundrechenarten (Addition, Subtraktion, Multiplikation, Division) sind mit moderatem Aufwand und mäßig komplexen Verfahren machbar
\item$\ominus$ Übersichtlichkeit sinkt mit steigender Anzahl veschiedener/voneinander zu unterscheidener Symbole und damit mit der Basis. \newline
$\Rightarrow$ das Ganze ist also auch eine Sache der Gewohnheit!
\end{itemize}
\section{Darstellung negativer Zahlen}
\subsection{Betrag und Vorzeichen}
$42\rightarrow-42$ bzw. $+42\rightarrow-42$ (positives Vorzeichen wird [meist] weggelassen) \newline
Nachteil: Addition von negativen Zahlen benötigt ein anderes Verfahren
als die Addition von Positiven Zahlen (unpraktisch für Computer).
Die erste \enquote{Ziffer} gibt das Vorzeichen an ($0\overset{\wedge}{=} positiv$, $1\overset{\wedge}{=} negativ$), der Rest der Ziffern ist bei negativen Zahlen der komplementierte Betrag in Binärdarstellung (komplementiert: $1=\lnot0$ und $0=\lnot1$, also \enquote{invertiert}) \newline
Die rote \textcolor{red}{1} wird ignoriert, weil sie nicht in den 7 Stellen enthalten ist.
Da die Zahl positiv ist (siehe \uline{\textcolor{blue}{0}}), muss kein Komplement gebildet werden.
$=0011100=\textbf{28}$
Hieran erkennt man auch schon den ersten Nachteil des 1er-Komplements: In manchen Fällen ist die Addition offenbar nicht ganz korrekt!
\end{paracol}
In der 1er-Komplement-Darstellung gibt es zudem zwei verschiedene Darstellungen der $0$. Einmal \enquote{$+0$}~$=00000$ und einmal \enquote{$-0$}~$=11111$ (zweiter Nachteil).
\textbf{Hinweis}: Sicherheitshalber hätte man 8 Stellen nehmen können. Dies hätte am falschen Ergebnis jedoch nichts geändert.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Wertebereiche}
\begin{enumerate}[noitemsep]
\item[a)] bei nicht-negativen, ganzen Binärzahlen mit n Stellen:
\begin{itemize}[noitemsep]
\item kleinste Zahl = 0
\item größte Zahl $=111\ldots111$$(n \times "1")=2^{n}-1$
\item$\Rightarrow$ insgesamt $2^n$ verschiedene Zahlen, die dargestellt werden können
\end{itemize}
\item[b)] bei 1er-Komplement-Darstellung mit $n$ Stellen
\begin{itemize}[noitemsep]
\item größte Zahl $=0111\ldots111~((n-1)\times "1")=2^{n-1}-1$
\item kleinste Zahl $=100\ldots000((n-1)\times "0")\xrightarrow{\text{1er Komplement}}0111\ldots111=2^{n-1}-1$\newline
$\Rightarrow-(2^{n-1}-1)=-2^{n-1}+1$
\item$\Rightarrow$ insgesamt $2^{n-1}$ positive Zahlen, $2^{n-1}$ negative Zahlen, sowie die Null, also insgesamt ($2^n -1$) verschiedene Zahlen, \dash es ist ein Zahlenwert weniger als mit $n$ Stellen möglich, darstellbar (dritter Nachteil).
Es kommt eine positive \enquote{0} raus. Durch Addieren von eins verhindern wir das Auftreten zweier Nullen!
\item Wertebereich, Beispiel: 8-Stellig
größte Zahl: $\textcolor{blue}{0}1111111_2=1+2+4+8+16+32+64=\textbf{127}$\newline
kleinste Zahl:: $10000000_2\xrightarrow{\text{invertieren (wird pos.)/1er~Komplement}}011111111\xrightarrow{\text{plus 1}}\textcolor{red}{1}0000000$. Die rote $1$ ist in diesem Fall die positive $\textbf{128}$, nicht das Vorzeichen!
\item Insgesamt $2^8=256$ verschiedene Werte mit 8-Bit.
\item$\ominus$ Nachteil: unsymmetrischer Wertebereich, \dash für die kleinste
(betragsmäßig größte) negative Zahl gibt es kein positives \enquote{Äquivalent}
(eigentlich \enquote{Komplement} im Wertebereich)
\item Computer stellen (ganze) Zahlen (mit einem auch nicht-negativen Wertebereich)
meist im Zweier-Komplement dar.
\end{enumerate}
\section{Darstellung von nicht-ganzen Zahlen}
Darstellung von nicht-ganzen Zahlen (zunächst von nicht-negativen Zahlen). Im folgenden werden verschiedene Darstellungsmöglichkeiten gezeigt.
\subsection{Darstellung als Bruch}\index{Bruch}
$\frac{2}{3}$ oder $5\frac{1}{2}$
\begin{itemize}[noitemsep]
\item$\ominus$ Jede Zahl hat unendlich viele Darstellungen, \zB\newline
Neben den Ziffern gibt es ein weiteres Symbol, nämlich das \enquote{Komma} [\enquote{~,~}] (bzw. den Punkt [\enquote{~.~}] im englischen Sprachraum).
\begin{itemize}[noitemsep]
\item jede Zahl hat einen Vorkommaanteil (feste Anzahl $n$ an Vorkommaziffern) und einen Nachkommaanteil (feste Anzahl $m$ an Nachkommaziffern). Dazwischen steht \textit{genau ein} Komma.
Die Abbruchbedingung ist, dass der Nachkommaanteil gleich null ist!
\begin{Achtung}
Falls vorher festgelegt, so müssen alle Nachkommastellen aufgefüllt werden, auch wenn alle folgenden Stellen null sind! Ist dies nicht der Fall, so können weitere nullen weggelassen werden, da sie nichts am Wert ändern.
\item[Mantisse] Festkommazahl mit potentiell sowohl Vor- als auch Nachkommastellen.
\item[Exponent] Ganze Zahl, welche die Anzahl der Stellen angibt, um welche das Komma bei der Mantisse verschoben werden muss, um den Zahlenwert zu erhalten.
\end{description}
\begin{tabular}{ll}
$103,578\cdot10^{2}=10357,8$&$\Rightarrow$ Komma wird um zwei Stellen nach rechts verschoben. \\
$103,578\cdot10^{-2}=1,03578$&$\Rightarrow$ Komma wird um zwei Stellen nach links verschoben.
\end{tabular}
\begin{Tipp}
Eine Kommaverschiebung gibt es, wenn mit einer Potenz der Basis multipliziert wird. Ansonsten muss gerechnet werden.
\end{Tipp}
\begin{Hinweis}
Im Computer ist $b=2$. Die Darstellung von Mantisse und Exponent findet als Gleitkommazahl bzw. als ganze Zahl zur Basis $2$ statt.
Achtung: Es gibt verschiedene Normierungsbedingungen. Jede Normierungsbedingung sorgt für eine eindeutige Darstellung jeder Zahl, aber die gleiche Zahl hat unterschiedliche Darstellungen bei verschiedenen Normierungsbedingungen.
\item alle Vorkommastellen $m_i=0$ mit $i\geq0$, \dash de facto keine Vorkommastelle (und nur Nachkommastellen) und $m_{-1}\neq0$, \dash die erste Nachkommastelle ist ungleich 0.
\end{enumerate}
\textbf{Problem} (bei allen Normierungsbedingungen): Es gibt keine normierte Darstellung der $0$!
\textbf{Abhilfe}: Neben der Mantisse, welche (natürlich) nur aus \enquote{0} bestehen, darf, wird für \enquote{0} auch der Wert des Exponenten festgelegt (\zB auf den kleinsten mit dem Exponenten darstellbaren Wert).
Eine bestimmte \enquote{erste Stelle} muss ungleich 0 sein. Es sind zwei Varianten gebräuchlich $\Rightarrow$ entweder ist die erste Stelle vor dem Komma oder die erste Stelle nach dem Komma ungleich null, um der Mehrfachdarstellung von Zahlen zu entgehen ($1,5\cdot10^1$ ist das gleiche wie $0,15\cdot10^{2}$).
\textit{Wichtig}: Die Basis ist immer gleich! Im Computer ist die Basis $b=2$, so gilt diese Basis auch für die Mantissendarstellung!
\subsection{Normierung zur Basis $b=2$}
Ist die erste Ziffer $\neq0$, ist muss die Ziffer $=1$ sein.
\begin{itemize}[noitemsep]
\item[$\Rightarrow$] diese Ziffer muss nicht explizit gespeichert werden.
\item[$\Rightarrow$] diese bei der Speicherung weggelassene Ziffer ist das sogenannte \enquote{\href{https://de.wikipedia.org/wiki/Gleitkommazahl\#Hidden_bit}{\textbf{Hidden Bit}}}\index{Hidden Bit}. Dadurch kann eine weitere Nachkommastelle gespeichert werden (das \enquote{Hidden Bit} ist nur bei der Basis 2 möglich, da bei dieser Basis darauf geschlossen werden kann, um welche Ziffern es sich handelt)
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Problem}: Darstellung der \enquote{0}!
\textbf{Lösung}: Ein spezielles Bitmuster stellt die \enquote{0} dar (alle Mantissen- und Exponentenbits sind \enquote{0}). In diesem Fall muss auch das \enquote{Hidden Bit}$=0$ gesetzt werden.
In allen anderen Fällen ist das \enquote{Hidden Bit}$=1$!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Beispiel} (mit 8~Bit):\newline
$1,011000_{2}$ für Zweierkomplement: $01,011000_2\xrightarrow{\text{1er-Komplement}}$ 10,100111 $\xrightarrow{\text{+1}}$ 10,101000
\textbf{Aufgabe}: Komma um \zB vier Stellen nach vorne verschieben: $\Rightarrow0,0001011000_2$
\textbf{Problem}:
\begin{itemize}[noitemsep]
\item Kommaverschiebung bei negativen Zahlen bedeutet anfügen von \enquote{1} anstatt \enquote{0}
\item Normierung bedeutet: Bestimmte Stelle $=0$ statt $=1$ bei negativen Zahlen.
\item[$\Rightarrow$] 2er-Komplement wird für Mantisse (meist) nicht verwendet.
\end{itemize}
\textit{Stattdessen: Vorzeichen und Betrag als übliche Darstellung der Mantisse bei Gleitkommazahl.}
\subsection{Negative Zahlen beim Exponenten?}
Herangehensweise beim Größenvergleich zweier Gleitkommazahlen:
\begin{enumerate}[noitemsep]
\item Vergleich der Mantissenvorzeichen
\item Vergleich der Exponenten. Beispiel: \newline
$1,111\cdot b^{-5}=0,00001111$ ist kleiner als \newline
$1,000\cdot b^{+3}=1010,0$
\item stellenweiser Vergleich\newline
Problem: positives Vorzeichen: (\enquote{0}) ist größer als negatives Vorzeichen (\enquote{1})
\item Mantissenvergleich
\end{enumerate}
Für Exponent: Aus potentiell negativem Exponenten wird immer ein nicht negativer Zahlenwert:\newline
Der Bias ist eine festgelegte Konstante für die jeweilige Zahlendarstellung, welche den Betrag der kleinsten negativen Zahl angibt.
Typischer Bias: bei 8 Bit Exponenten: 127 (\dash$-127\leq exp_{reell}\leq+128$). \newline
Achtung: Dieser Wertebereich ist gegenüber dem mit 2er-Komplement erzielbaren Wertebereich um \enquote{1} verschoben (beim 2er-Komplement reicht der Wertebereich von $-128$ bis $+127$)!
\textbf{Beispiele}
\begin{table}[h]
\centering
\begin{tabular}{c|cc}
Bias & gespeichert & reell \\
\midrule
127 &$2^{0}$&$2^{-127}$\\
127 &$2^{127}$&$2^{0}$\\
127 &$2^{50}$&$2^{-77}$\\
127 &$2^{255}$&$2^{128}$\\
\end{tabular}
\caption{Gleitkommazahlen - Beispiele für Bias}
\end{table}
\subsection{Speicherung von Gleitkommazahlen gemäß IEEE 754}\index{IEEE 754}
\item[kleinste Zahl >0]$2^{-16}=\frac{1}{65536}\approx0,00001$$\Rightarrow$ gleichzeitig der kleinste unterscheidbare Abstand zweier (benachbarter) Zahlen.
\enquote{Hidden Bit} = \enquote{1} als 1. Vorkommastelle
\begin{Hinweis}
Ich bin mir sicher, dass Herr Röthig gesagt hat, dass alle Exponentenbits für die größtmögliche Zahl auf 1 gesetzt werden. Laut IEEE 754 handelt es sich aber um \acs{NaN} bzw. Unendlich, wenn alle Exponentenbits gesetzt sind.
\textit{Siehe auch \url{https://de.wikipedia.org/wiki/IEEE_754}}.
$\Rightarrow$$(1+2^{-22})\cdot2^{-127}$, \dash Abstand ist $2^{-150}$
\dash der kleinste Abstand zwischen zwei (benachbarten) Zahlen ist bei Gleitkommazahlen nicht konstant, sondern hängt vom jeweiligen Exponenten der Zahl ab!
\end{description}
Bei Überläufen ergibt sich \enquote{\acf{NaN}}, welches durch ein spezielles Bitmuster dargestellt wird.
\begin{Achtung}
Der Vergleich von NaN mit NaN ergibt \textit{immer}\code{false}! Dies ist im Standard definiert.
\begin{center}
$NaN \neq NaN$
\end{center}
\end{Achtung}
\subsection[Umrechnung in GKZ zur Basis 2]{Umrechnung einer Zahl in die Darstellung als Gleitkommazahl zur Basis 2 im Computer}
$\Rightarrow4,2\cdot10^{-1}$
\begin{enumerate}[noitemsep]
\item Feststellung des Vorzeichens. Weitere Rechnung mit Betrag durchführen.
\item Schritt: Umrechnung in eine Festkommazahl
$4,2\cdot10^{-1}=0,42$
\item Umrechnung der Festkommazahl in die Zielbasis 2: $0,\textcolor{red}{0110101110000}$
\begin{table*}[h]
\centering
\begin{tabular}{l}
$0,42\cdot2=\textcolor{red}{0},84$\\
$0,84\cdot2=1,68$\\
$0,68\cdot2=1,56$\\
$0,56\cdot2=0,72$\\
$0,72\cdot2=1,44$\\
$0,44\cdot2=0,88$\\
$0,88\cdot2=1,76$\\
\end{tabular}
\begin{tabular}{l}
$0,76\cdot2=1,52$\\
$0,52\cdot2=1,04$\\
$0,04\cdot2=0,08$\\
$0,08\cdot2=0,16$\\
$0,16\cdot2=0,32$\\
$0,32\cdot2=0,64$\\
\\
\end{tabular}
\end{table*}
Solange weiter rechnen, bis die relevante Anzahl signifikanter Mantissenbits erreicht ist (die ersten nullen sind \textit{nicht} signifikant! Erst die erste \enquote{1} ist signifikant. \textit{Achtung}: Bei \enquote{Hidden Bit} eine Stelle mehr).
\item Komma verschieben für Normierung, Exponent entsprechend setzen
Für die Klausur müssen nur die Gesamtanzahl der Bits auswendig gelernt werden (\texttt{float}, \texttt{double}, \texttt{half}). Der Rest (also Anzahl Bits der Mantisse,\ldots) muss \textit{nicht} auswendig gelernt werden!
\end{Hinweis}
\section{Weitere Zahlencodierungen}
Zahlencodierung wird unterschieden in:
\begin{description}
\item[Wertcodierung] Wert der Zahl als ganzes wird betrachtet und codiert.
\item[Zifferncodierung] Zahl wird Ziffernweise codiert \newline
Beispiel:
\begin{itemize}[noitemsep]
\item direkte Umrechnung von 2er ins 16er-System (oder ähnliches).
\item Zahlendarstellung im Text (als Ziffernfolge)