ECC edits
All checks were successful
CI / Typos (pull_request) Successful in 7s
CI / Typst formatting (pull_request) Successful in 5s
CI / Build (pull_request) Successful in 4m32s

This commit is contained in:
2025-02-26 08:46:48 -08:00
parent 871a02bb1d
commit c29f0d25c7
6 changed files with 41 additions and 24 deletions

View File

@ -1,6 +1,6 @@
\section{Hamming Codes}
Say we have a 16-bit message, for example \texttt{1011 0101 1101 1001}. \par
Say we have an $n$-bit message, for example \texttt{1011 0101 1101 1001}. \par
We will number its bits in binary, from left to right:
@ -62,13 +62,14 @@ We will number its bits in binary, from left to right:
\problem{}
In this 16-bit message, how many message bits have an index with a one as the last digit? \par
If we number the bits of a 16-bit message as described above, \par
how many message bits have an index with a one as the last digit? \par
(i.e, an index that looks like \texttt{***1})
\vspace{2cm}
\problem{}
Say we number the bits in a 32-bit message as above. \par
Now consider a 32-bit message. \par
How many message bits have an index with a one as the $n^\text{th}$ digit? \par
\vspace{2cm}
@ -76,7 +77,10 @@ How many message bits have an index with a one as the $n^\text{th}$ digit? \par
We now want a way to detect errors in our 16-bit message. To do this, we'll replace a few data bits with parity bits. This will reduce the amount of information we can send, but will also improve our error-detection capabilities.
Now, let's come up with a way to detect errors in our 16-bit message.
To do this, we'll replace a few data bits with parity bits.
This will reduce the amount of information we can send,
but will allow the receiver to detect errors in the received message.
\vspace{1mm}
@ -174,7 +178,8 @@ Can this coding scheme correct a single-bit error?
\vfill
\pagebreak
We'll now add four more parity bits, in positions \texttt{0001}, \texttt{0010}, \texttt{0100}, and \texttt{1000}:
We'll now add four more parity bits, in positions \texttt{0001}, \texttt{0010}, \texttt{0100}, and \texttt{1000}: \par
This error-detection scheme is called the \textit{Hamming code}.
\begin{center}
\begin{tikzpicture}[scale = 1.25]
@ -246,7 +251,7 @@ Bits \texttt{0100} and \texttt{1000} work in the same way. \par
When counting bits in binary numbers, go from right to left.}
\problem{}
Which message bits does each parity bit cover? \par
Which message bits does each parity bit \say{cover}? \par
In other words, which message bits affect the value of each parity bit? \par
\vspace{1mm}
@ -358,7 +363,7 @@ Analyze this coding scheme.
\vfill
\problem{}
Each of the following messages has either 0, 1, or two errors. \par
Each of the following messages has either one, two, or no errors. \par
Find the errors and correct them if possible. \par
\hint{Bit \texttt{0000} should tell you how many errors you have.}
@ -590,7 +595,7 @@ A \textit{message stream} is an infinite string of binary digits.
\problem{}
Show that Hamming codes do not reliably detect bit deletions: \par
\hint{
Create a 17-bit message whose first 16 bits are a valid Hamming block, \par
Create a 17-bit message whose first 16 bits are a valid Hamming-coded message, \par
and which is still valid when a bit (chosen by you; not the $17^\text{th}$) is deleted.
}
@ -598,10 +603,11 @@ Show that Hamming codes do not reliably detect bit deletions: \par
\problem{}
Convince yourself that Hamming codes cannot correct insertions. \par
Then, create a 16-bit message that...
Then, create a 16-bit message that:
\begin{itemize}
\item is a valid Hamming block, and
\item incorrectly "corrects" a single bit error when it encounters an insertion error.
\item is itself a valid Hamming code, and
\item incorrectly "corrects" a single bit error when it encounters an insertion error. \par
You may choose where the insertion occurs.
\end{itemize}
\vfill