\section{Codierung} \subsection{Arten von Codierungen} \begin{itemize} \item \textbf{Zeichencodierung:} Darstellung von Schriftzeichen \item \textbf{Zahlencodierung:} Darstellung von Zahlenwerten \item \textbf{Anwendungscodierung:} Darstellung von Informationen einer Anwendung \item \textbf{Verschlüsselung:} Umcodierung, sodass die Daten nur mit zusätzlichen Informationen entschlüsselt werden können \item \textbf{Komprimierung:} Reduzierung der Datenmenge durch Umcodierung \item \textbf{Signalcodierung:} Darstellung abstrakter Info als \\Signal/Signalfolge \end{itemize} \subsection{Zeichencodierung} \begin{itemize} \item \textbf{ASCII:} 7-Bit-Zeichensatz, viele nationale Zeichen nicht enthalten \item \textbf{ISO 8859-X:} 8-Bit-Zeichensatz, erweitert ASCII um nationale Zeichen \item \textbf{Unicode:} 8/16/32-Bit-Zeichensatz, enthält fast alle Schriftzeichen, enthält Fortsetzungszeichen \end{itemize} \subsection{Zahlencodierung} \subsubsection{Abzählsysteme} Jedes Symbol hat einen Symbolwert, aufaddieren der Symbolwerte ergibt den Zahlenwert. \subsubsection{Fingerabzählsystem} $A = \{\mathrm{Finger}\}$ \\ $S(\mathrm{Finger}) = 1$ \\ Wertebereich $[0, 10[$ \\ Keine negativen Zahlen möglich, sehr einfach \subsubsection{Einfache Strichliste} $A = \{\mid\}$ \\ $S(\mid) = 1$ \\ Wertebereich $[0, \infty[$ \\ Keine negativen Zahlen möglich, sehr einfach, keine Subtraktion möglich, Übersichtlich bis ca. $10$ \subsubsection{erweiterte Strichliste} $A = \{\mid, \cancel{\mid\mid\mid\mid}\}$ \\ $S(\mid) = 1$ \\ $S(\cancel{\mid\mid\mid\mid}) = 5$ \\ Wertebereich $[0, \infty[$ \\ Sortieren und zusammenfassen wenn möglich \\ Keine negativen Zahlen möglich, einfach, keine Subtraktion möglich, Übersichtlich bis ca. $50$ \subsubsection{Römisches Zahlensystem} $A = \{I, V, X, L, C, D, M\}$ \\ $S(I) = 1$ \\ $S(V) = 5$ \\ $S(X) = 10$ \\ $S(L) = 50$ \\ $S(C) = 100$ \\ $S(D) = 500$ \\ $S(M) = 1000$ \\ Wertebereich $[0, 3999]$ \\ Keine negativen Zahlen möglich, keine Subtraktion möglich, wenig verständlich, nicht einfach \subsection{Stellenwertsysteme} Gängige Stellenwertsysteme: \begin{itemize} \item Dezimalsystem: Basis 10 \item Binärsystem: Basis 2 \item Oktalsystem: Basis 8 \item Hexadezimalsystem: Basis 16 \end{itemize} Darstellung von negativen Zahlen: \begin{itemize} \item Vorzeichen und Betrag \item Einerkomplement \item Zweierkomplement \end{itemize} Darstellung von Kommazahlen: \begin{itemize} \item \textbf{Bruchdarstellung:} Unendlich viele Möglichkeiten \item \textbf{Festkommadarstellung:} Feste Anzahl an Nachkommastellen (Verschiebung des Kommas) \item \textbf{Gleitkommadarstellung:} Mantisse und Exponent \end{itemize} \subsubsection{IEEE 754} Sign Bit $S$ statt 2er Komplement. Manitisse $M$ und Exponent $E$. \\ $S \cdot M \cdot 2^E$ \paragraph{Normalisierte Darstellung} \ \\ \textbf{Zwei Optionen:} \\ Mantisse mit genau einer Ziffer vor dem Komma ODER Manitisse mit $0$ vor dem Komma und erstem Nachkommastellenzeichen $1$ \paragraph{reservierte Bitmuster} \ \\ Exponent $0$: keine Normalisierung, kein Hidden Bit $\to$ Exponent = 1 - Bias \\ $\to$ Mantisse $0$: $\pm 0$ \\ Exponent $2^e - 1$: Zahl nicht darstellbar \\ $\to$ Mantisse $0$: $\pm \infty$ \\ $\to$ Mantisste $\neq 0$: NaN \paragraph{Umrechnung} \begin{enumerate} \item Vorzeichen merken, weiter mit Betrag \item Darstellung als Festkommazahl also Exponent (Basis 10) = 0 \item Umrechnung als Festkommazahl ins Binärsystem (Mantisse (bei 16 Bit → 10) Stellen nach der 1. “1” berechnen) \item Bestimmung von Exponent real durch Kommaverschiebung bei der Mantisse hinter die erste “1” (Normalisierung) \item Bestimmung von Exponent gespeichert (Exponent reals + Bias) \item Umrechnung Exponent gespeichert ins Binärsystem \item Notation des Bitmusters (fehlende Stellen bei Exponent mit führenden “0”, bei Mantisse mit “0” am ende auffüllen, bei zu großen Zahlen → Bitmuster für Unendlich) \end{enumerate} \subsubsection{Codierungsmethoden} \begin{itemize} \item Wertecodierung: Wert wird insgesamt codiert \item Zifferncodierng: Ziffern werden einzeln codiert \end{itemize} \paragraph{BCD (Binary Coded Decimal)} \ \\ 4-Bit-Code für jede Dezimalziffer, 0-9 codiert, 1010-1111 reserviert \paragraph{Gray-Code} \ \\ Wechsel nur einer Bitstelle bei aufeinanderfolgenden Zahlen, um lesefehler zu vermindern.\\ Beginend mit $0\dots0$ je das rechteste Bit invertieren, sodass ein bislang nicht vorkommender Code entsteht. \subsection{Signalcodierung} Mögliche Signalarten: \begin{itemize} \item elektrische Signale (z.B. in Computern verwendet) \item optische Signale \item mechanische Signale \end{itemize} \subsubsection{NRZ (Non Return to Zero)} symmetrische oder single-ended Pegel \\ Während eines Bitintervalls wird ein Signalpegel gehalten. \begin{itemize} \item \textbf{TRG}: Bei jedem Pegelwechsel ist Taktrückgewinnung möglich \item \textbf{GSF}: Nur bei symmetrischen Pegel und gleichverteiltung von 0 und 1 Gleichstromfrei. \item \textbf{SSH}: Störsicherheit optimal, da nur 2 Pegel \item \textbf{BBB}: Halbe Schrittweite, also optimaler Bandbreitenbedarf \end{itemize} \subsubsection{RZ (Return to Zero)} symmetrische oder single-ended Pegel \\ Während eines Bitintervalls wird ein Signalpegel gehalten, in der Mitte des Intervalls wird der Pegel auf 0 zurückgesetzt. \begin{itemize} \item \textbf{TRG}: Bei jeder 1 ist Taktrückgewinnung möglich \item \textbf{GSF}: in der Praxis nie Gleichstromfrei. \item \textbf{SSH}: Störsicherheit optimal, da nur 2 Pegel \item \textbf{BBB}: schlecht (vorallem bei vielen 1) \end{itemize} \subsubsection{AMI (Alternate Mark Inversion)} symmetrische Pegel + 0-Pegel. \\ Zwei Signalpegel für die $1$-Darstellung. \\ Die beiden Signalpegel wechseln sich ab. \begin{itemize} \item \textbf{TRG}: Bei jeder 1 ist Taktrückgewinnung möglich \item \textbf{GSF}: nach jeder 2ten 1 Gleichstromfrei (in der Praxis immer) \item \textbf{SSH}: Störsicherheit schlecht, da 3 Pegel \item \textbf{BBB}: Halbe Schrittweite, also optimaler Bandbreitenbedarf \end{itemize} \subsubsection{Manchester} symmetrische Pegel \\ Darstellung eines Bits mithilfe eines Pegelwechsels in der Mitte des Bitintervalls.\\ z.B. $0 \to 01$ und $1 \to 10$ \begin{itemize} \item \textbf{TRG}: immer Taktrückgewinnung möglich \item \textbf{GSF}: immer Gleichstromfrei \item \textbf{SSH}: optimal, da nur 2 Pegel \item \textbf{BBB}: schlecht \end{itemize} \subsubsection{TRG ermöglichen} \begin{enumerate} \item \textbf{Startbitsequenz}: \\ Vor jedem Datenblock eine Startbitsequenz, die eine Taktrückgewinnung ermöglicht. \item \textbf{Bit-Stuffing}: \\ Wenn zu viele gleiche Bits hintereinander auftreten, wird ein zusätzliches Bit eingefügt. \item \textbf{Blockcodierung}: \\ Daten werden in Blöcke der länge n+1 umcodiert, die eine Taktrückgewinnung ermöglichen. \end{enumerate}