Division durch 2 mit Vorzeichen

Gast #107274
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.
Gast #107275
Wenn ich mich recht entsinne, dann musst du das nicht beachten, sondern
nach dem Verschieben dein MSB-1 in das MSB kopieren.

Gruß

Oliver
Gast #107276
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
Gast #107277
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.
Gast #107278
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.
Gast #107280
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
Gast #107283
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.
Gast #107285
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.