Schieberegister
Ein Schieberegister ist ein logisches Schaltwerk. Mehrere in Reihe geschaltete Flipflops schieben ihren Speicherinhalt (je 1 Bit) bei jedem Arbeitstakt um ein Flipflop weiter - anschaulich gesehen ähnlich einer Eimerkette. Die Anzahl der im Register vorhandenen Speicherplätze ist konstant.
Schieberegister arbeiten nach dem FIFO-Prinzip. Das zuerst eingespeicherte Bit verlässt den Speicher zuerst. Das Herein- und Herausschieben, das Ein- und das Auslesen geschehen dabei synchron, ein Schieberegister kann nur bedingt als Warteschlange genutzt werden.
Oft erweitert man Schieberegister mit zusätzlicher Logik (bestehend aus mehreren Logikgattern). Diese kann dafür sorgen,
- dass das höchste Bit in das niedrigste Bit geschoben wird (es findet also eine Rotation statt, man spricht auch von einem Rundschiebe-Register),
- dass man es bidirektional betreiben kann, die Richtung der Verschiebung also variabel ist,
- festgelegt werden kann, ob das freiwerdende Bit gesetzt oder gelöscht werden soll, und/oder
- dass man das Register parallel beschreiben oder auslesen kann.
Verwendung


Serialisierung und Parallelisierung von Bitmustern
Schieberegister sind Bestandteil von Wandlern zwischen seriellen und parallelen Daten. Mittels Schieberegistern lässt sich also eine Serialisierung oder Parallelisierung von Bitmustern realisieren. Bei einer Serialisierung muss es dabei möglich sein, das jeweilige Bitmuster parallel in das Schieberegister zu laden, d. h. jedes Flipflop benötigt einen Lade-Eingang. Ansonsten läge ja bereits eine serielle Repräsentation vor. Bei einer Parallelisierung muss entsprechend jedes Flipflop über einen lesbaren Ausgang verfügen, damit zu einem bestimmten Zeitpunkt die Werte des gesamten Schieberegisters parallel ausgelesen werden können.
Multiplikation von Binärzahlen
Die Multiplikation zweier Binärzahlen erfolgt durch Verschieben und Addieren (zum Bsp. durch den Booth-Algorithmus). In Mikroprozessoren wird dies durch Schieberegister erreicht. Es wird also ein Datensignal weitergeschoben. Ist z.B. ein Signalzustand "high" vorhanden, so wird dieser an das nächste Bit weitergeschoben.
Bitverschiebung in Maschinensprachen
Die meisten Maschinensprachen verfügen über einen Shift-Befehl auf den Registern. Damit kann man in Maschinensprache durch Schieben und Addieren oft sogar schneller multiplizieren als über den generischen Multiplikationsbefehl/Multiplikationsalgorithmus. So multipliziert man zum Beispiel schneller mit 320, indem man erst das Register kopiert, dann das eine Register um 8 bits schiebt (Multiplikation mit 256) und das andere Register um 6 bits schiebt (Multiplikation mit 64) und dann die beiden Register addiert. Des Weiteren fällt beim Schieben das herausgefallene Bit dabei nicht weg, sondern meist in ein Flag des Flag-Registers und kann dann weiterverarbeitet werden. Man unterscheidet beim Schieben das logische und das arithmetische Schieben. Beim arithmetischen Schieben bleiben dabei positive Zahlen positiv und negative Zahlen negativ. Dazu wird das höchstwertige Bit nicht verändert.
Verwendung als Puffer
Zur Filterung von digitalisierten Signalen puffert ein Signalprozessor eine feste Zahl von Werten. Dies kann in Schieberegistern erfolgen.
Erzeugung von Pseudozufallszahlen
Zur Erzeugung von Pseudozufallszahlen werden linear rückgekoppelte Schieberegister verwendet.
Zyklische Redundanzprüfung
Die Zyklische Redundanzprüfung (Cyclic redundancy check, CRC) kann mit einem durchs XORs rückgekoppelten Schieberegister in Hardware ausgeführt werden.