<?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=Lookup-Tabelle</id>
	<title>Lookup-Tabelle - 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=Lookup-Tabelle"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lookup-Tabelle&amp;action=history"/>
	<updated>2026-06-05T04:47:25Z</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=Lookup-Tabelle&amp;diff=350132&amp;oldid=prev</id>
		<title>imported&gt;Serols: Änderungen von 217.70.138.127 (Diskussion) auf die letzte Version von Johannes Maximilian zurückgesetzt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lookup-Tabelle&amp;diff=350132&amp;oldid=prev"/>
		<updated>2025-04-07T09:44:14Z</updated>

		<summary type="html">&lt;p&gt;Änderungen von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/217.70.138.127&quot; title=&quot;Spezial:Beiträge/217.70.138.127&quot;&gt;217.70.138.127&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Benutzer_Diskussion:217.70.138.127&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer Diskussion:217.70.138.127 (Seite nicht vorhanden)&quot;&gt;Diskussion&lt;/a&gt;) auf die letzte Version von &lt;a href=&quot;/index.php?title=Benutzer:Johannes_Maximilian&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:Johannes Maximilian (Seite nicht vorhanden)&quot;&gt;Johannes Maximilian&lt;/a&gt; zurückgesetzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Quelle||Dieser Artikel}}&lt;br /&gt;
[[Datei:Abramowitz&amp;amp;Stegun.page97.agr.jpg|mini|Die [[Logarithmentafel]] als Vorläufer der LUT]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lookup-Tabellen&amp;#039;&amp;#039;&amp;#039; (LUT) bzw. &amp;#039;&amp;#039;&amp;#039;Umsetzungstabellen&amp;#039;&amp;#039;&amp;#039; werden in der [[Informatik]] und in der [[Digitaltechnik]] verwendet, um Informationen statisch zu definieren und diese zur [[Laufzeit (Informatik)|Laufzeit]] des Programms – zur Vermeidung aufwändiger Berechnungen oder hohen Speicherverbrauchs – zu benutzen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.itwissen.info/LUT-lookup-table-Wertetabelle.html |titel=LUT (lookup table) :: Wertetabelle :: ITWissen.info |abruf=2019-04-15}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grundstruktur ==&lt;br /&gt;
* In einer [[Tabelle]] werden für bestimmte Konstellationen vorberechnete Ergebnisse oder andere Informationen definiert.&lt;br /&gt;
* Die einzelnen Einträge der LUT werden entweder über eine Spalte &amp;#039;&amp;#039;Kurzcode&amp;#039;&amp;#039; (der als Suchbegriff verwendet wird) oder über ihre &amp;#039;&amp;#039;Position&amp;#039;&amp;#039; (Eintrag 01-nn gilt für Sachverhalt 1-nn) identifiziert.&lt;br /&gt;
* Jeder Eintrag enthält die &amp;#039;&amp;#039;vordefinierte Information&amp;#039;&amp;#039;, bei Bedarf auch weitere für den Eintrag geltende Attribute.&lt;br /&gt;
* In der Ausführung von [[Computerprogramm|Programmen]], d.&amp;amp;nbsp;h. zur Verwendung der LUT-Inhalte, wird auf die einzelnen Einträge der LUT durch [[Referenz (Programmierung)|Referenzierung]] (über im Programm gebildete oder verfügbare [[Schlüssel (Datenbank)|Schlüssel]]) zugegriffen.&lt;br /&gt;
&lt;br /&gt;
== Nutzen und Zweck ==&lt;br /&gt;
* &amp;#039;&amp;#039;Komplexe Berechnungen&amp;#039;&amp;#039; zur Programmlaufzeit lassen sich durch eine in der Regel schnellere Wertsuche ersetzen.&lt;br /&gt;
* &amp;#039;&amp;#039;Speicherplatz&amp;#039;&amp;#039; lässt sich einsparen, weil in den eigentlichen Datenbeständen (mit einer hohen Anzahl von Einträgen) nur ein Kurzcode geführt und die zugehörige Langbezeichnung aus der Tabelle verwendet wird.&lt;br /&gt;
* Auch lässt sich der &amp;#039;&amp;#039;Erfassungsaufwand&amp;#039;&amp;#039; sowie die &amp;#039;&amp;#039;Fehlerwahrscheinlichkeit&amp;#039;&amp;#039; durch Eingabe von Kurzcodes (anstatt langer Bezeichnungen) bzw. durch Verwendung von [[Combobox|Auswahlboxen]] (mit [[Voreinstellung|Vorbelegung]] möglicher Eingaben) minimieren.&lt;br /&gt;
* Die &amp;#039;ausgelagerten&amp;#039; Informationen können bei Bedarf &amp;#039;&amp;#039;geändert&amp;#039;&amp;#039; werden (z.&amp;amp;nbsp;B. Langbezeichnungen), ohne die Änderung in den eigentlichen Daten selbst vornehmen zu müssen.&lt;br /&gt;
&lt;br /&gt;
== Speicherung, Erzeugung, Verarbeitung ==&lt;br /&gt;
Zur Speicherung und Verarbeitung von Lookup-Tabellen sind folgende Varianten üblich:&lt;br /&gt;
# Der Tabelleninhalt wird &amp;#039;&amp;#039;im Programm selbst&amp;#039;&amp;#039; (in speicherinternen Datenstrukturen) gespeichert und zur Verarbeitung verwendet.&lt;br /&gt;
# Der Tabelleninhalt wird &amp;#039;&amp;#039;in externen Datenbeständen&amp;#039;&amp;#039; (z.&amp;amp;nbsp;B. in einer [[Datenbanktabelle]] oder einer [[Datei]]) gespeichert. Zur Verarbeitung wird auf diese Daten entweder jeweils direkt zugegriffen oder sie werden bei Programmstart in den internen Speicher des Programms geladen und wie unter 1. verarbeitet.&lt;br /&gt;
&lt;br /&gt;
Zur Erzeugung der LUT-Daten kommen mehrere Verfahrensweisen infrage:&lt;br /&gt;
* Die LUT-Inhalte werden im Programm &amp;#039;&amp;#039;statisch definiert;&amp;#039;&amp;#039; nur zu Variante (1) möglich. Änderungen bedingen eine neue Programmversion.&lt;br /&gt;
* Die LUT-Inhalte werden automatisch (z.&amp;amp;nbsp;B. bei Programmanfang oder in einem Vorprogramm) ermittelt und &amp;#039;&amp;#039;temporär gespeichert.&amp;#039;&amp;#039; Ist das erzeugende und das verwendende Programm identisch, so kann wie bei (1) intern gespeichert werden. Werden die LUT-Daten von anderen Programmen, evtl. mehreren, benutzt, so wird wie bei (2) extern gespeichert.&lt;br /&gt;
* Die LUT-Inhalte werden &amp;#039;&amp;#039;mit einer eigenen Anwendung oder mithilfe von [[Editor (Software)|Standardwerkzeugen zur Datenpflege]]&amp;#039;&amp;#039; erzeugt und geändert. Hierbei ist nur die externe Speicherung gem. (2) üblich.&lt;br /&gt;
&lt;br /&gt;
Externe Lookup-Tabellen definieren sich lediglich über die Art ihrer Verwendung (look-up = &amp;quot;nachschlagen&amp;quot;); bezüglich der Speicherungstechnik unterscheiden sie sich in keiner Weise von anderen Daten.&lt;br /&gt;
&lt;br /&gt;
== Anwendung für vorberechnete Ergebnisse ==&lt;br /&gt;
===  Prinzip ===&lt;br /&gt;
Die Werte einer [[Funktion (Programmierung)|Funktion]] werden vorab ermittelt und im [[Halbleiterspeicher|Speicher]] als Tabelle abgelegt. Damit gleicht das LUT-Verfahren der Benutzung einer Tabelle aus der Vor-Taschenrechner-Ära, wie bei Zinstabellen, im [[Tafelwerk (Buch)|Tafelwerk]] und manchen [[Rechenschieber]]n.&lt;br /&gt;
&lt;br /&gt;
Die LUT wird als eine [[Datenstruktur]], meist ein ([[Assoziatives Array|assoziatives]]) [[Feld (Datentyp)|Array]], das komplizierte Laufzeitberechnungen durch einen einfachen [[Indexstruktur|indizierten]] Zugriff auf die Datenstruktur ersetzt, realisiert. Dies führt zu einem signifikanten Geschwindigkeitsgewinn, sofern die benötigten Speicherzugriffe schneller sind als die normale Berechnung.&lt;br /&gt;
&lt;br /&gt;
Da die Zugriffe auf den [[Indexstruktur|Index]] der &amp;#039;&amp;#039;Lookup&amp;#039;&amp;#039;-Tabelle mit einem geringerwertigeren [[Datentyp]] durchgeführt werden können als die in der Tabelle enthaltenen Werte, kann die Methode auch zur Einsparung von Speicherplatz verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Ein klassisches &amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039; ist eine [[Trigonometrie|trigonometrische]] Tabelle. Die Berechnung des [[Sinus und Kosinus|Sinus]] etwa kann sehr lange dauern und ist bei jedem Aufruf der Funktion wiederholt nötig. Um das zu vermeiden, werden zu Beginn einige Werte des Sinus berechnet und in einer Tabelle gespeichert, zum Beispiel für jede ganze Gradzahl. Später, wenn ein konkreter Sinus berechnet werden soll, rundet die Funktion die gewünschte Gradzahl und liest den Sinuswert aus der Tabelle.&lt;br /&gt;
&lt;br /&gt;
=== Pre-Intervallabbildung und Post-Interpolation ===&lt;br /&gt;
Zu beachten ist weiterhin, dass z.&amp;amp;nbsp;B. ein reelles Argument (bzw. eine Real-Zahl mit einigen Nachkommastellen) erst auf einen natürlichen (Integer-)Index abgebildet werden muss, um als Schlüssel für eine Speicherstelle Verwendung zu finden.&lt;br /&gt;
Dazu muss, wenn beispielsweise für eine periodische Funktion nur Werte aus der ersten Periode um 0 herum in der LUT vorhanden sind, das Argument zunächst in das Periodenintervall abgebildet („reelles Modulo“) und danach [[Hashing|gehasht]] (auf eine Speicherstelle abgebildet) werden.&lt;br /&gt;
&lt;br /&gt;
Um die Genauigkeit der Berechnung zu verbessern, kann auch ein [[Interpolation (Mathematik)|Interpolations]]-Algorithmus verwendet werden. Dabei wird versucht, durch mehrere benachbarte Einträge aus der Tabelle (im obigen Beispiel die darüber und darunter liegende ganze Gradzahl) und einige weitere Berechnungen den Wert genauer abzuschätzen. Das benötigt zwar etwas mehr Zeit, kann die Genauigkeit aber enorm verbessern. Die Methode kann auch dazu verwendet werden, die Lookup-Tabelle bei gleicher Genauigkeit zu verkleinern.&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
Bei der Benutzung von Lookup-Tabellen ist zu beachten, dass sie auch langsamer als die direkte Berechnung sein können, wenn die Berechnung relativ simpel ist. Das liegt nicht nur an langsamen Speicherzugriffen, sondern auch an einem erhöhten Speicherbedarf und einer Beeinträchtigung des [[Cache]]s. Dies wird immer wichtiger, da Mikroprozessoren zunehmend schneller als Speicherchips werden. [[Optimierer|Optimierungen]] wie die beispielhaft angeführten Sinus-Tabellen sind mit modernen Prozessorgenerationen oft unnötig oder sogar kontraproduktiv.&lt;br /&gt;
&lt;br /&gt;
== Anwendung in Integrierten Schaltungen ==&lt;br /&gt;
{{Hauptartikel|Field Programmable Gate Array#Aufbau und Struktur|titel1=„Aufbau und Struktur“ im Artikel Field Programmable Gate Array}}&lt;br /&gt;
[[Datei:Logic block.gif|mini|Beispielhafter Logikblock eines FPGAs, mit LUT und Flipflop]]&lt;br /&gt;
In der digitalen [[Digitaltechnik|Schaltungstechnik]] werden im Gegensatz zur Programmierung auch sehr einfache Funktionen wie logische Gleichungen ([[Konjunktion (Logik)|AND]], [[Disjunktion|OR]], [[Kontravalenz|XOR]]) durch eine LUT ersetzt. Eine Tabelle ist leichter anzupassen als eine Transistorschaltung, daher wird die LUT in der programmierbaren Logik, insbesondere [[Field Programmable Gate Array|FPGAs]] und bei der Herstellung von [[Integrierter Schaltkreis|ICs]] nach Kundenwunsch ([[Anwendungsspezifische integrierte Schaltung|ASIC]]), implementiert.&lt;br /&gt;
* Bei FPGAs wird die Tabelle in einem kleinen [[Static random-access memory#Schreibzugriff|SRAM]]-Feld gespeichert. So kann mit einem Speicher von 16×1 Bit jede logische Funktion mit 4 Eingängen realisiert und durch &amp;#039;&amp;#039;Programmierung&amp;#039;&amp;#039; geändert werden. Die Anzahl der LUT-Eingänge hängt von der FPGA-Architektur ab.&lt;br /&gt;
* In ASICs wird die LUT u.&amp;amp;nbsp;a. als [[Festwertspeicher|(Masken-)ROM]] realisiert. Anstatt einen IC komplett für den Auftraggeber maßzufertigen, werden insbesondere bei [[Gate-Array]]s variable Grundschaltungen als LUTs vorgefertigt; nur wenige Fertigungsschritte ([[Leiterbahn|Metallisierung]]) werden speziell für den Kunden ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Eine weitere LUT-Schaltung basiert auf einem 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-nach-1-[[Multiplexer]] mit n Steuereingängen und 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; Speicherstellen. Auch wurden [[Programmable Read-Only Memory|PROM]]-Speicher zur Realisierung einer 8-Bit-[[Arithmetisch-logische Einheit|ALU]] verwendet.&lt;br /&gt;
&lt;br /&gt;
== Anwendung für Wertausprägungen ==&lt;br /&gt;
Hierbei werden in Lookup-Tabellen Einträge für beliebige anwendungsbezogene Inhalte (z.&amp;amp;nbsp;B. Informationen je Bundesland, je Branche, je Kfz-Ortskennzeichen, je Währung, je Fehlercode etc.) geführt. Die Einträge bestehen i.&amp;amp;nbsp;d.&amp;amp;nbsp;R. aus einer Kurz-Identifikation und weiteren Attributen, z.&amp;amp;nbsp;B. einer ausführlichen Bezeichnung. Die Tabellen können wie folgt benutzt werden:&lt;br /&gt;
* Bei der Erfassung von Attributwerten für die betrieblichen Datenbestände (nicht für die LUT!) werden nur in der LUT vorhandene Einträge als &amp;#039;&amp;#039;gültig&amp;#039;&amp;#039; akzeptiert bzw. zur Eingabeauswahl angeboten.&lt;br /&gt;
* In den betrieblichen Daten, z.&amp;amp;nbsp;B. je Kunde, wird (anstelle der ausführlichen Bezeichnung) nur ein &amp;#039;&amp;#039;Kurzcode&amp;#039;&amp;#039; gespeichert; die ausführliche Bezeichnung kann bei Bedarf dargestellt werden.&lt;br /&gt;
* Evtl. erforderliche &amp;#039;&amp;#039;Änderungen in der Schreibweise&amp;#039;&amp;#039; von Bezeichnungen müssen nur in der LUT vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&lt;br /&gt;
* Eine Bank muss die Höhe der Kredite je Branche monatlich melden.&lt;br /&gt;
* In der Meldung ist je Branche eine Zeile mit der ausführlichen Branchenbezeichnung gefordert, z.&amp;amp;nbsp;B. Land- und Forstwirtschaft; öffentliche Haushalte; Industrie und Handwerk ...&lt;br /&gt;
* Die Reihenfolge der Zeilen ist von der Meldebehörde fest vorgegeben.&lt;br /&gt;
* In einer LUT werden alle zur Meldung vorgesehenen Branchen geführt – mit Inhalt &amp;#039;Branchenschlüssel, Branchenbezeichnung, Zeilennummer&amp;#039;.&lt;br /&gt;
* Für jeden Kredit (bzw. Kunden) ist festgelegt, zu welcher Branche er gehört; der jeweilige Branchenschlüssel (3 Stellen) ist gespeichert.&lt;br /&gt;
* Zur Erstellung der Meldung werden in der IT-Anwendung die Kreditssummen je Branchenschlüssel gebildet, nach Zeilennummer (aus der LUT) sortiert und die Branchenbezeichnung wird aus der LUT zugeordnet.&lt;br /&gt;
Die Einzelzeilen der Branchenmeldung könnten dann z.&amp;amp;nbsp;B. wie folgt aussehen:&lt;br /&gt;
 ZL-NR   Branchenbezeichnung                 Kreditsumme&lt;br /&gt;
  01     Öffentliche Haushalte &amp;lt;sup&amp;gt;1)&amp;lt;/sup&amp;gt;              1.234.567 &amp;lt;sup&amp;gt;2)&amp;lt;/sup&amp;gt;&lt;br /&gt;
  02     Land- und Forstwirtschaft               567.890&lt;br /&gt;
         &amp;lt;sup&amp;gt;1) = aus der Lookup-Tabelle zugeordnet           2) über Branchenschlüssel aggregiert&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Indizierte Farben|Farbpalette]]&lt;br /&gt;
* [[Wahrheitstabelle]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenstruktur]]&lt;br /&gt;
[[Kategorie:Programmierbare Logik]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Serols</name></author>
	</entry>
</feed>