Schieberegister

k_b
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 213
Registriert: 15. Mär 2009 12:06

Schieberegister

Beitrag 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 ;)

robert.n
Nerd
Nerd
Beiträge: 673
Registriert: 29. Sep 2008 19:17

Re: Schieberegister

Beitrag 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).

k_b
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 213
Registriert: 15. Mär 2009 12:06

Re: Schieberegister

Beitrag 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 :)

Christoph-D
Computerversteher
Computerversteher
Beiträge: 325
Registriert: 11. Dez 2005 13:14
Wohnort: Darmstadt

Re: Schieberegister

Beitrag 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.
"I believe in the fundamental interconnectedness of all things." (Dirk Gently)

Mspringer
Nerd
Nerd
Beiträge: 555
Registriert: 19. Okt 2006 14:41
Wohnort: Darmstadt / Alzenau
Kontaktdaten:

Re: Schieberegister

Beitrag von Mspringer »

Stimmt schon. Für arithmetische Shifts ist das so. Aber im Normalfall wird in der Aufgabe genau definiert, was gemacht werden soll.

Antworten

Zurück zu „TGdI 1“