balanced counter Algorithmus

OP #5917045
Lesenswert?
• ▲
▼
Diese Funktionen dienen der Umkodierung zwischen normalen Bytes zu DC 
freier / ausgeglichener Kodierung. Die Kodewörter enthalten immer gleich 
viele Einsen wie Nullen. Die Funktionen kodieren Informationsbits ohne 
Redundanz in ausgeglichene Symbole.
Der Nutzen ist eine Begrenzung der Bandbreite durch Hochpassfilterung 
des Bitstroms.
Eine Anwendung sind einfache SAW OOK Funkstrecken bei 315 oder 433 MHz.
Diese Kodierung ist im Bes. für OOK Modulation geeignet, da Störungen 
zusätzliche Highpegel erzeugen und diese leicht erkannt werden.
Die hier zunächst veröffentlichten Funktionen bilden nur den Kern der 
Umkodierung.
"Encode.c" nimmt eine Zahl zwischen 0 und 19 (für 16=2^4 bit) und 
liefert ein Byte indem die niederwertigsten 6 bit die Zahl kodieren. 
"Decode.c" wiederum macht es rückgängig, indem es ein Byte nimmt, die 
Einsen zählt und dann eine Zahl die dem Byte entspricht erzeugt. 
a==Decode(Encode(a))
Der Algorithmus skaliert zu beliebig hohen Zahlen wobei die 
worst-case-Laufzeit extrem groß wird. Diese Implementation ist durch die 
Daten-Typen begrenzt aber ließe sich erweitern. Ohne "Abkürzungen" ist 
diese Methode nur für eine 4b/6b oder 6b/8b Kodierung geeignet. Und 
stellen eine effizientere Alternative zum Manchester Code 1b/2b dar.
Die zwei Funktionen zählen gleichzeitig auf zwei Arten hoch und runter. 
Sinn und Zweck ist die Umwandlung zwischen einer normalen 
Binärdarstellung in eine Zahl deren Eingenschaft es ist, dass sie gleich 
viele Einsen wie Nullen hat.
Motivation war es kein Vorwissen einzubauen. Also keine Tabelle und auch 
kein zusammenbauen bzw. direktes Auswerten aufgrund bekannter Wertigkeit 
bestimmter Positionen/Stellen. In gewisser Weise ist diese die dümmste 
mögliche Methode, aber irgendwie auch die natürlichste, denn die Zahl 
ergibt sich nur durch den Algorithmus, ganz ohne magische 
einprogrammierte Zahlen.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.