Hallo, wenn ich eine Zahl im zweierkomplement vorliegen habe und sie durch 2 teilen will, dann muss ich doch vor dem rechtsshift beachten ob die Zahl positiv oder negativ ist und das carry entsprechend setzen?!? Stimmt meine Annahme so? Danke für tips! GRUß, Peter.
Wenn ich mich recht entsinne, dann musst du das nicht beachten, sondern nach dem Verschieben dein MSB-1 in das MSB kopieren. Gruß Oliver
Im AVR-Assembler gibt es extra dafür einen Befehl: ASR - Arithmetic Shift Right Hier wird das MSB einfach so belassen, wie es ist. Bei anderen Prozessoren/Mikrocontrollern gibt es was Ähnliches möglicherweise auch. Gruß Ingo
Hallo Oliver, erstmal Danke für die schnelle Antwort! Ich denke wir meinen das gleiche. Ich hätte das MSB in das Carry kopiert und dann den rechtsshift ausgeführt. Das carry wird dann zum MSB. Kommt aufs gleiche raus so wie ich das sehe. Gruß, Peter.
Hallo Ingo, ebenfalls Danke für die Antwort! ich "muss" leider auf einem 8051-Derivat programmieren. so einen luxuriösen Befehl habe ich leider nicht :-( Trotzdem Danke! Gruß, Peter.
Schade, mußt Du es halt doch "zu Fuß" machen. Hab mal grad so aus interesse nachgesehen, es gibt sowas auch schon bei älteren Prozessoren :-) Z80: SRA (Shift right arithmetical) x86: SAR (Sift arithmetic right) Wäre eventuell auch hilfreich, bei Fragen zumindest den Prozessor-/Mikrocontrollertyp immer mit anzugeben. Gruß Ingo
Teil doch einfach einmal -1 durch 2 und sieh Dir das Ergebnis an: schieben reicht nicht. Runden sollte man zuvor auch noch !
Hallo Peter, klar, stimmt schon. der 8051 kann dafür anderes "besser". habe leider den Sinn des letzten Beitrages von Dir nicht so ganz verstanden. könntest du bitte erklären was du meinst? wo liegt hier der Trick? Danke!! Gruß, Peter.
Bezieht sich auf Michaels Post. Bein negativen Werten mußt Du noch 1 addieren, damit die Division stimmt. Sonst ist: -1 / 2 = -1 Peter
Hallo Peter,hallo Michael, vielen vielen Dank für den tipp!!! Da wäre ich sehr wahrscheinlich reingefallen und hätte ewig nach Fehlern gesucht!! Jetzt klappt es so wie es soll! Danke!!! Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.