Hi.

Zitat von
üäpöol
Die Idee war ohne Vorzeichen mit eins multiplizieren, wodurch die Zahl entweder positiv bleibt oder wird.
Ha, ha, ha. Selten so gelacht.
Denk nochmal drüber nach... Stichwort "neutrales Element", Multiplikation, natürliche Zahlen...
Warum setzt du denn nicht einfach das Vorzeichenbit?
Gruß
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Hi,
Das Thema wird zum Beispiel hier erklärt.
Abstrakt gesagt musst du eigentlich nur alle Bits in dem Byte umdrehen, bin mir aber auch nicht mehr sicher.
Gruß,
BK
Über eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"

Zitat von
üäpöol
Ich bin leider blutiger Anfänger mit Assembler und verstehe leider nicht ganz, wie ich ein Vorzeichenbit setzen kann
Stichwort Bitoperationen.
Wie werden denn bei dir überhaupt neg./pos. Zahlen repräsentiert? Zweierkomplement? Dann müßtest du doch das MSB testen und dann umrechnen.

Zitat von
üäpöol
und was du mit neutrales Element meinst.

https://de.wikipedia.org/wiki/Nullelement
Gruß
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Hi,
hier mal ein paar Beispiele, wie Zahlen auf Bitebene in einem Byte aussehen:
Code :
1
2
3
4
5
| -1: 1111 1111
1: 0000 0001
-15: 1111 0001
127: 0111 1111
-128: 1000 0000 |
Positiv machen kannst du diese, indem du die Zahl nimmst, ein exklusives Oder mit -1 (alle bits gesetzt)
machst und anschließend noch +1 rechnest.
Da meine ASM-Kenntnisse nicht gerade die Besten sind, folgende Angaben ohne Gewähr:
Code asm:
1
2
3
| ; In EAX ist die Zahl
XOR EAX, -1
INC EAX |
Grüße,
BK
Über eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"

Zitat von
üäpöol
OK. Jetzt versteh ich's.

Das bedeutet, ich muss das erste byte der Variable/Register nur auf 0 setzten.
Nein, da die Werte (höchstwahrscheinlich) im Zweierkomplement gespeichert werden.
Du mußt die Methode von Bratkartoffel verwenden. Dazu mußt du aber erstmal prüfen ob das MSB überhaupt 1 ist.
\edit: wenn mich nicht alles täuscht gibt es auch eine NEG Operation.
Gruß
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Zitat von
üäpöol
@timestamp
Das ist klar, aber was hat das mit meinem Problem zu tun?
So klar schien dir das wohl nicht zu sein, da du mit 1 multipliziert hast und eine Veränderung des Wertes erwartet hast... 

Zitat von
üäpöol
@deepthroat
Das bedeutet, es gibt keine Möglichkeit die Zahl ohne Abfrage zuvor, positiv zu machen?
Ja.
Gruß
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.