Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die?

Kelsjb7

Mitglied
Hi, ich weiß, was die beiden tun
habe ich z. B. 1000 als Binärzahl und ich mache

1000<<2-->100000
und
1000>>2 -->10

also umgehen kann ich mit diesen, aber was bringt das mir? Also warum verwenden das Programmierer, was denken die sich dabei?
 
Beste Antwort
K
Zum einen kann die mathematische Bedeutung interessant sein: ein Shift um eine Stelle entspricht *2 bzw /2.

Und zum Anderen kann es sinnvoll sein, wenn man mit den Bits selbst arbeitet und dann bestimmte Bits an eine spezifische Stelle bekommen möchte.
Zum einen kann die mathematische Bedeutung interessant sein: ein Shift um eine Stelle entspricht *2 bzw /2.

Und zum Anderen kann es sinnvoll sein, wenn man mit den Bits selbst arbeitet und dann bestimmte Bits an eine spezifische Stelle bekommen möchte.
 
Beste Antwort
Zum einen kann die mathematische Bedeutung interessant sein: ein Shift um eine Stelle entspricht *2 bzw /2.

Und zum Anderen kann es sinnvoll sein, wenn man mit den Bits selbst arbeitet und dann bestimmte Bits an eine spezifische Stelle bekommen möchte.
Asoo! Lol das habe ich voll nicht bemerkt, ist das immer so?

z. B. 10<<4 wäre dann 10*2*2*2*2 und andernfalls mit geteilt, kann man das immer so anwenden?+

Und bei geteilt, darf ich die Nachkommastellen nicht beachten oder?

Aber warum klappt es dann z. B.

hier nicht

25>>2 wäre 25/2/2 also 6,... und das sehen wir als 6?
 
Du kannst es ja einfach ausprobieren. 🙂

Aber zur Erläuterung: es ist ja ein verschieben des Kommas.

Das kennen wir ja auch im Dezimalsystem. Wenn wir eine 100 haben und das Komma um eine Stelle nach Rechts schieben, erhalten wir eine 1000. Im Dezimalsystem entspricht das einem mal 10 bzw. Geteilt durch 10.

Evtl. Sieht man es bei der Exponentialdarstellung 1*10^2 wird zu 1*10^3 was ja ein 1*10*10^2 ist.

Im Dualen System ist es dann halt mal 2 bzw geteilt durch 2 ... die Wertungen der Stellen sind halt 2^0, 2^1, 2^2, ....
 
Und wenn man es nicht ausprobieren möchte, dann kann man es sich binär anschauen:

25 ist 1 + 8+ 16 => 11001

Da kann man dann umm zwei Stellen schieben, damit wird es zu
110 und das ist 2 + 4 = 6
 
Hallo außer zum rechnen kann man es auch dazu benutzen um an das höher oder ninderwertige wertige Byte, Word , BCD Zahl zu kommen.

Bei einem µc ist das bei der BCD Arithmetik zb sehr nützlich.

Das ist eigentlich auch ein Maschinen Behle den die CPU direkt unterstützt. Meisten nur wenige Tackte braucht also sehr schnell ausgeführt wird.
 
Zuletzt bearbeitet:
Und wenn man es nicht ausprobieren möchte, dann kann man es sich binär anschauen:

25 ist 1 + 8+ 16 => 11001

Da kann man dann umm zwei Stellen schieben, damit wird es zu
110 und das ist 2 + 4 = 6
Genau, so habe ich das verstanden vielen Dank, dadurch konnte ich mir ableiten, dass die Nachkommastellen wegfallen, aber kann man davon ausgehen, dass das immer so ist? bei right shift, einfach Nachkommastellen nicht mehr beachten und immer durch 2? Das haben zumindest alle Zahlen ergeben, bei denen ich es getestet habe, frage mich halt, ob es da Ausnahmen gibt.
 
Genau, so habe ich das verstanden vielen Dank, dadurch konnte ich mir ableiten, dass die Nachkommastellen wegfallen, aber kann man davon ausgehen, dass das immer so ist? bei right shift, einfach Nachkommastellen nicht mehr beachten und immer durch 2? Das haben zumindest alle Zahlen ergeben, bei denen ich es getestet habe, frage mich halt, ob es da Ausnahmen gibt.
Bei ganzen Zahlen gibt es keine Nachkommastellen. Daher entfallen die Nachkommastellen.
 
Genau, so habe ich das verstanden vielen Dank, dadurch konnte ich mir ableiten, dass die Nachkommastellen wegfallen, aber kann man davon ausgehen, dass das immer so ist? bei right shift, einfach Nachkommastellen nicht mehr beachten und immer durch 2? Das haben zumindest alle Zahlen ergeben, bei denen ich es getestet habe, frage mich halt, ob es da Ausnahmen gibt.
ja pracktisch aber wie teilst du durch drei
 
ja pracktisch aber wie teilst du durch drei
Das hat mit dem Thema Shift Operator nichts zu tun.

Über Google finden sich aber bezüglich Multiplikation und Division einige Links. So habe ich auf die Schnelle inen Link, den ich aber jetzt nicht im Detail gelesen habe, aber der auf den ersten Blick vielversprechend aussieht:
 
Wenn man manche Rechenoperationen wie z.B. Division zu Fuß machen muß (d.h. die Division aus anderen Befehlen zusammenbauen muß weil es keinen Hardwarebefehl dafür gibt) braucht man die Schiebeoperatoren auch.
Sowas wird einem zwar nicht in Java über den Weg laufen, aber in Assembler kommt sowas durchaus schonmal vor.
 

Zurück
Oben