Seite 1 von 1

Schieberegister

Verfasst: 24. Mär 2009 20:07
von k_b
Wie wird bestimmt was (0 oder 1) bei einem Shift in ein Schieberegister "nachgeschoben" wird? Ich denke, dass es sowohl eine 1 oder eie 0 sein könnte, aber in den Folien sieht es so aus, als wäre es immer eine 0. Hängt es vielleicht davon ab, ob es ein Shift nach rechts oder links ist?

Ich hoffe es kann mir jemand helfen, schonmal danke im Voraus für Antworten ;)

Re: Schieberegister

Verfasst: 24. Mär 2009 20:50
von robert.n
Hm, irgendwo wurde mal folgendes Beispiel gebracht (vllt. reicht dir das ja schon):
Angenommen du speicherst in einem Schieberegister eine Zahl. Wenn du dann alle Bits 1 Position nach rechts schiebst, kommt das einer Division durch 2 gleich. Umgekehrt ist es so, als würdest du die Zahl verdoppeln. Natürlich vorausgesetzt man schiebt immer eine 0 (statt einer 1) nach (und der Wertebereich wird nicht überschritten).

Re: Schieberegister

Verfasst: 24. Mär 2009 22:34
von k_b
Danke, das war schonmal eine hilfreiche Info. ;)

Aber weiß vielleicht doh noch jemand wie man herausfindet, ob eine 0 oder eine 1 nachgeschoben wird. Wie ist es dann mit dem genannten Beispiel,wenn man immer eine 1 nachgeschobe wird und keine 0?

Und nochmals schonmal Danke für Antworten :)

Re: Schieberegister

Verfasst: 25. Mär 2009 01:10
von Christoph-D
k_b hat geschrieben:Aber weiß vielleicht doh noch jemand wie man herausfindet, ob eine 0 oder eine 1 nachgeschoben wird. Wie ist es dann mit dem genannten Beispiel,wenn man immer eine 1 nachgeschobe wird und keine 0?
Es gibt zwei Arten von Shifts: Logische und arithmetische.

Beim logischen Shift werden immer 0en reingeschoben.
Der arithmetische Links-Shift ist genau das gleiche wie der logische Links-Shift.

Aber beim arithmetischen Rechts-Shift werden nicht immer 0en reingeschoben, sondern es wird der Wert des höchstwertigsten Bits verwendet. Das bewirkt effektiv, dass bei nicht-negativen Zahlen 0en reingeschoben werden, bei negativen (im 2er-Komplement) dagegen 1en.
Siehe auch: http://de.wikipedia.org/wiki/Bitweiser_ ... chiebungen

Deswegen muss bei Rechts-Shifts dabeistehen, ob man den logischen oder den arithmetischen Shift meint. x86-CPUs haben dafür z.B. zwei verschiedene OP-Codes.

[Angaben ohne Gewähr; ich weiß nicht, wie das momentan im TGdI-1-Stoff formuliert ist.]


edit: Hm... Vielleicht lag ich gerade auch total daneben, mein Posting passt evtl. besser zu GdI3. :)
Bei einem allgemeinen Schieberegister (was man z.B. selber baut, in Hardware oder in Verilog oder sonstwas) kann man jedenfalls völlig frei entscheiden, was nachgeschoben wird, da gibt es keine Einschränkungen. Das ist ja z.B. gerade der Witz an Konstrukten wie dem LFSR.

Re: Schieberegister

Verfasst: 25. Mär 2009 01:34
von Mspringer
Stimmt schon. Für arithmetische Shifts ist das so. Aber im Normalfall wird in der Aufgabe genau definiert, was gemacht werden soll.