<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=BCH-Code</id>
	<title>BCH-Code - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=BCH-Code"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=BCH-Code&amp;action=history"/>
	<updated>2026-05-19T10:17:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=BCH-Code&amp;diff=564563&amp;oldid=prev</id>
		<title>imported&gt;Wdwd: rev, Änderung bitte kommentieren</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=BCH-Code&amp;diff=564563&amp;oldid=prev"/>
		<updated>2026-02-27T18:09:10Z</updated>

		<summary type="html">&lt;p&gt;rev, Änderung bitte kommentieren&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;BCH-Codes&amp;#039;&amp;#039;&amp;#039; (Bose-Chaudhuri-Hocquenghem-Codes) sind [[Zyklischer Code|zyklische]] [[Vorwärtsfehlerkorrektur|fehlerkorrigierende]] [[Kanalkodierung|Codes]], welche in der [[Digitale Signalverarbeitung|digitalen Signalverarbeitung]] und [[Datenspeicher]]ung eingesetzt werden. Der Name BCH ergibt sich aus den Anfangsbuchstaben der drei Wissenschaftler, die diesen Code entwickelt haben: [[Raj Chandra Bose|R. C. Bose]], [[D. K. Ray-Chaudhuri]] und [[Alexis Hocquenghem|A. Hocquenghem]] (1908–1990). BCH-Codes korrigieren mehrere 1-Bit-Fehler in einem längeren Nutzer-Datenwort.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Sei &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; eine primitive &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-te [[Einheitswurzel]] in einem [[Körpererweiterung|Erweiterungskörper]] des [[Endlicher Körper|endlichen Körpers]] &amp;lt;math&amp;gt;\mathbb F_q&amp;lt;/math&amp;gt;. Seien &amp;lt;math&amp;gt; l,\delta \in \mathbb{N}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\delta \ge 2&amp;lt;/math&amp;gt;, und C der zyklische Code, dessen [[Generatorpolynom]] das Produkt der verschiedenen [[Minimalpolynom]]e von &amp;lt;math&amp;gt;\beta^l, \dots, \beta^{l+\delta-2}&amp;lt;/math&amp;gt; ist. (Dann besteht C also aus allen &amp;lt;math&amp;gt;f \in \mathbb F_q[x]/(x^n-1)&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;f(\beta^l) = \dots = f(\beta^{l+\delta-2})=0&amp;lt;/math&amp;gt;), dann nennt man C einen &amp;#039;&amp;#039;&amp;#039;BCH-Code&amp;#039;&amp;#039;&amp;#039; mit &amp;#039;&amp;#039;&amp;#039;geplantem Minimalabstand&amp;#039;&amp;#039;&amp;#039; &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;, wobei C den Minimalabstand &amp;lt;math&amp;gt;d \ge \delta&amp;lt;/math&amp;gt; hat. &lt;br /&gt;
&lt;br /&gt;
Für den Fall &amp;lt;math&amp;gt;l = 1&amp;lt;/math&amp;gt; spricht man von einem BCH-Code im &amp;#039;&amp;#039;&amp;#039;gewöhnlichen Sinn&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Falls ein m existiert mit &amp;lt;math&amp;gt;n = q^m - 1&amp;lt;/math&amp;gt; (d.&amp;amp;nbsp;h. &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; ist ein Erzeuger der multiplikativen Gruppe eines Körpers &amp;lt;math&amp;gt;\mathbb F_{q^m}&amp;lt;/math&amp;gt;), so spricht man von einem &amp;#039;&amp;#039;&amp;#039;primitiven&amp;#039;&amp;#039;&amp;#039; BCH-Code.&lt;br /&gt;
&lt;br /&gt;
Ein [[Reed-Solomon-Code]] ist ein primitiver BCH-Code im gewöhnlichen Sinn, für den &amp;lt;math&amp;gt;n = q - 1&amp;lt;/math&amp;gt; gilt. Hier sind die Minimalpolynome also von der Form &amp;lt;math&amp;gt;x-\beta^i \in \mathbb F_q[x], i=1, \ldots, \delta-1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Einsatzbereiche ==&lt;br /&gt;
* Die sogenannten [[Reed-Solomon-Code]]s sind spezielle BCH-Codes und werden z.&amp;amp;nbsp;B. zur Fehlerkorrektur auf [[Compact Disk|Audio-CDs]] eingesetzt.&lt;br /&gt;
* Der BCH-Code wird auch bei der Sicherung der TPS-Daten im [[DVB-T]]-Standard genutzt.&lt;br /&gt;
* Der BCH-Code wird zur Sicherung der Nutzdaten in den DVB-S-Standards genutzt. Die Daten werden zunächst BCH-, dann LDPC-kodiert. Der BCH korrigiert hierbei die Restfehlerbits, die nach der LDPC-Korrektur verbleiben können.&lt;br /&gt;
* Die Funkruf-Protokolle [[POCSAG]] und [[FLEX (Protokoll)|FLEX]] verwenden den BCH(31,21)-Code&lt;br /&gt;
&lt;br /&gt;
== BCH(15, 7, 5) ==&lt;br /&gt;
Als Beispiel sei ein &amp;lt;math&amp;gt;(n = 15, k = 7, d_\text{min} = 5)&amp;lt;/math&amp;gt; BCH-Code gegeben. Die Parameter &amp;lt;math&amp;gt;n, k, d_\text{min}&amp;lt;/math&amp;gt; sind dabei wie folgt zu interpretieren. Der Code erzeugt Codewörter mit einer Länge von &amp;lt;math&amp;gt;n = 15&amp;lt;/math&amp;gt; [[Bit]]s, wovon &amp;lt;math&amp;gt;k = 7&amp;lt;/math&amp;gt; Bits die kodierte Information enthalten und &amp;lt;math&amp;gt;n -k&amp;lt;/math&amp;gt; Bits Redundanz zur Korrektur von Übertragungsfehlern dienen. Der Parameter &amp;lt;math&amp;gt;d_{min}&amp;lt;/math&amp;gt; gibt die minimale Hammingsdistanz des Codes an.&lt;br /&gt;
&lt;br /&gt;
Es gilt: Es können Übertragungsfehler von bis zu &amp;lt;math&amp;gt;d_\mathrm{min} - 1&amp;lt;/math&amp;gt; Einzelbitfehlern erkannt werden, es können Übertragungsfehler von bis zu &amp;lt;math&amp;gt;(d_\mathrm{min} - 1) / 2&amp;lt;/math&amp;gt; Einzelbitfehlern korrigiert werden. Bündelfehler von bis zu &amp;lt;math&amp;gt;f_\mathrm{b} \le k&amp;lt;/math&amp;gt; [[Bit]]s werden erkannt.&lt;br /&gt;
&lt;br /&gt;
Ein BCH-Code wird in der Regel durch sein Generatorpolynom beschrieben. Im gegebenen Beispiel lautet das Generatorpolynom &amp;lt;math&amp;gt;g(x) = x^8 + x^7 + x^6 + x^4 + 1&amp;lt;/math&amp;gt;. Die Anzahl der Prüfbits &amp;lt;math&amp;gt;n-k&amp;lt;/math&amp;gt; lässt sich übrigens immer aus dem Generatorpolynom ablesen. Es gilt &amp;lt;math&amp;gt;n-k = \operatorname{Grad}(g)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Für die Dimension des Codes gilt: &amp;lt;math&amp;gt;\dim C = n-\operatorname{Grad}(g) = 15-8 = 7 = k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kodieren ===&lt;br /&gt;
Zum Kodieren mit BCH-Kodes können das Multiplikations- oder das Divisionsverfahren verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=== Multiplikationsverfahren ===&lt;br /&gt;
Beim Multiplikationsverfahren wird das zu kodierende Quellkodewort aus &amp;lt;math&amp;gt;l = 7&amp;lt;/math&amp;gt; [[Bit]]s einfach mit dem Generatorpolynom des BCH-Codes multipliziert. Es gilt: &amp;lt;math&amp;gt;a(x) = a^*(x) \cdot g(x)&amp;lt;/math&amp;gt;. Dabei steht &amp;lt;math&amp;gt;a(x)&amp;lt;/math&amp;gt; für das kodierte Kanalkodewort, &amp;lt;math&amp;gt;a^*(x)&amp;lt;/math&amp;gt; steht für das unkodierte Quellkodewort. Die Multiplikation kann sowohl mit Polynomen als auch mit einer binären Darstellung der Polynome durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier wollen wir ein Beispiel in binärer Darstellung durchrechnen:&lt;br /&gt;
&lt;br /&gt;
Das gegebene Generatorpolynom &amp;lt;math&amp;gt;g(x) = x^8 + x^7 + x^6 + x^4 + 1&amp;lt;/math&amp;gt; lässt sich binär als die Folge &amp;lt;math&amp;gt;g = 111010001&amp;lt;/math&amp;gt; darstellen (die Folge ist dabei zu interpretieren als &amp;lt;math&amp;gt;g(x) = 1 \cdot x^8 + 1 \cdot x^7 + 1 \cdot x^6 + 0 \cdot x^5 + 1 \cdot x^4 + 0 \cdot x^3 + 0 \cdot x^2 + 0 \cdot x^1 + 1 \cdot x^0&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Als zu kodierendes Quellkodewort dient in unserem Beispiel &amp;lt;math&amp;gt;a^* = 1001011&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;a^*(x) = 1 \cdot x^6 + 0 \cdot x^5 + 0 \cdot x^4 + 1 \cdot x^3 + 0 \cdot x^2 + 1 \cdot x^1 + 1 \cdot x^0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Um das kodierte Kanalkodewort zu erhalten, müssen wir jetzt also einfach &amp;lt;math&amp;gt;a^*&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; multiplizieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = a^* \cdot g = 1001011 \cdot 111010001 = 111100010111011&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Divisionsverfahren ===&lt;br /&gt;
&lt;br /&gt;
Das Divisionsverfahren ermöglicht es zu einem gegebenen Quellkodewort genau jenes Kanalkodewort zu ermitteln, welches das gegebene Quellkodewort als Präfix hat, weswegen man sagt, das Verfahren liefert einen systematischen Kode. Für ein gegebenes Generatorpolynom &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt; und ein Quellkodewort &amp;lt;math&amp;gt; a^* &amp;lt;/math&amp;gt; errechnet man das zugehörige Kanalkodewort &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt; nach Divisionsverfahren wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; a := a^* \cdot x^k - \left( a^* \cdot x^k \right) \bmod g &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das heißt, man muss den Rest der Polynom-Division &amp;lt;math&amp;gt; \left( a^* \cdot x^k \right) : g &amp;lt;/math&amp;gt; ermitteln und diesen von &amp;lt;math&amp;gt; a^* \cdot x^k &amp;lt;/math&amp;gt; subtrahieren. Am Beispiel von oben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{array}{ccccc} g &amp;amp; = &amp;amp; x^8 + x^7 + x^6 + x^4 + 1 &amp;amp; \mathrel{\widehat{=}} &amp;amp; 111010001 \\ a^* &amp;amp; = &amp;amp; x^6 + x^3 + x + 1 &amp;amp; \mathrel{\widehat{=}} &amp;amp; 1001011 \\ a^* \cdot x^k &amp;amp; = &amp;amp; x^{14} + x^{11} + x^9 + x^8 &amp;amp; \mathrel{\widehat{=}} &amp;amp; 100101100000000 \end{array} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Division in Koeffizienten-Schreibweise lautet dann:&lt;br /&gt;
&lt;br /&gt;
  100101100000000 : 111010001 = 1100111&lt;br /&gt;
   111111010&lt;br /&gt;
    001010110&lt;br /&gt;
     010101100&lt;br /&gt;
      101011000&lt;br /&gt;
       100010010&lt;br /&gt;
        110000110&lt;br /&gt;
         --------&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;01010111&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit gilt &amp;lt;math&amp;gt; a = 100101100000000 - 01010111 = \underbrace{1001011}_{a^*}01010111 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Dekodieren ===&lt;br /&gt;
Die Dekodierung kann mittels verschiedener Verfahren nach folgendem Muster erfolgen:&lt;br /&gt;
&lt;br /&gt;
# Bestimmung des Syndromwertes (Divisionsrest), indem das empfangene Kanalkodewort &amp;lt;math&amp;gt;a(x)&amp;lt;/math&amp;gt; durch das Generatorpolynom &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; dividiert wird. Ist der Rest ungleich 0 liegen ein oder mehrere Fehler vor.&lt;br /&gt;
# Bestimmen des Fehlerpolynoms.&lt;br /&gt;
# Bestimmung der Nullstellen des Fehlerpolynoms zur Ermittlung der Fehlerpositionen im Codewort.&lt;br /&gt;
# Bestimmung der Fehlerwerte&lt;br /&gt;
&lt;br /&gt;
Übliche Algorithmen zur Dekodierung von BCH-Codes sind der [[Berlekamp-Massey-Algorithmus]] oder der [[Peterson-Gorenstein-Zierler-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
Wenn das Codewort vom obigen Beispiel ohne Fehler übertragen wird, bleibt als Rest der Division &amp;lt;math&amp;gt; a : g&amp;lt;/math&amp;gt; Null. Die Division in Koeffizienten-Schreibweise lautet dann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!-- Berechnungen können hier nachgerechnet werden: http://www.flechtmann.net/crc/index.php --&amp;gt;&lt;br /&gt;
  100101101010111 : 111010001 = 1100111&lt;br /&gt;
   111010001&lt;br /&gt;
    001010011&lt;br /&gt;
     010100110&lt;br /&gt;
      111010001&lt;br /&gt;
       100111001&lt;br /&gt;
        111010001&lt;br /&gt;
         --------&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;00000000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde das Codewort während der Übertragung verfälscht, beispielsweise zu 10&amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;101&amp;#039;&amp;#039;&amp;#039;01&amp;#039;&amp;#039;&amp;#039;1010111 (Stellen 3, 7 und 8), ergibt sich nach der Polynomdivision ein von 0 verschiedenes Fehlersyndrom: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  101101011010111 : 111010001 = 1111100&lt;br /&gt;
   101110100&lt;br /&gt;
    101001011&lt;br /&gt;
     100110100&lt;br /&gt;
      111001011&lt;br /&gt;
       000110101&lt;br /&gt;
        001101011&lt;br /&gt;
         --------&lt;br /&gt;
         &amp;#039;&amp;#039;&amp;#039;01101001&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
*{{Literatur&lt;br /&gt;
|Autor = Shu Lin, Daniel J. Costello&lt;br /&gt;
|Titel = Error Control Coding. Fundamentals and applications&lt;br /&gt;
|Verlag = Prentice Hall |Ort=Upper Saddle River NJ | Auflage = 2. | Jahr = 2004 | ISBN = 0-13-042672-5 }}&lt;br /&gt;
*{{Literatur&lt;br /&gt;
|Autor = Robert H. Morelos-Zaragoza&lt;br /&gt;
|Titel = The Art of Error Correcting Coding&lt;br /&gt;
|Verlag = Wiley | Ort=New York NY |Auflage = 2. | Jahr = 2006 | ISBN = 0-470-01558-6 }}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Bch-Code}}&lt;br /&gt;
[[Kategorie:Theoretische Informatik]]&lt;br /&gt;
[[Kategorie:Kodierungstheorie]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Wdwd</name></author>
	</entry>
</feed>