easy-forum
Deutsch - Software => easySoft => Thema gestartet von: Mr. Spok am Februar 13, 2008, 09:02:11 Vormittag
-
Hallo liebe Forum-User,
ich suche eine Möglichkeit mit einfachen Mittelnden Betrag einer Zahl zu ermitteln.
Zuerst wollte ich eigentlich das "Vorzeichenbit" manipulieren, habe dann aber gemerkt das die Easy negative Zahlen ganz anders darstellt, z.B. entspricht der Wert -1 binär = 1111 1111 1111 1111 1111 1111 1111 1111
also kein Vorzeichenbit.
Wer kan helfen??
P.S. Da wäre gleich etwas für die Verbesserungsvorschläge, einen Baustein für die Betragsbildung oder die Erweiterung eines vorhandenen Bausteins für diese Rechenoperation.
mfG Jan
-
Hallo Mr. Spok,
folgende Lösung ist möglich.
a) Die pos. Zahl normal verarbeiten.
b) Über CP-Vergleicher abfragen ob die Zahl negativ ist
[ I1 < Nu 0 ]
c) Wenn ja, dann BV-Boolsche Verknüpfung mit NOT und die negative Zahl
an I1 einlesen. Am Ausgang QV des Bausteins steht der Betrag der
negativen Zahl.
Beispiel:
Wert
-10 dez. = 1000 0000 0000 0000 0000 0000 0000 1010 bin im MD
BV-Baustein
I1 = 1000 0000 0000 0000 0000 0000 0000 1010 bin
NOT
___________________________________________________
QV = 0000 0000 0000 0000 0000 0000 0000 1010 bin = +10 dez.
Mfg
Heinrich-Wilhelm Fricke
-
Hallo Ihr Zwei
ich habe ein kleines Musterprogr. angefügt das den Wunsch von Jan hoffe ich erfüllt.
MfG Kurt
-
Hallo auch Ihr Zwei,
@Kurt
Dein Programm funktioniert in der Simulation, danke. Ich dachte nur das geht einfacher >:( :( z.B. mit dem BV-Baustein.
@Heinrich - Wilhelm
-10 wird in der Easy als (Bit32...Bit1) 1111 1111 1111 1111 1111 1111 1111 0101 dargestellt. Da gibts kein Vorzeichenbit. Ich muß jetzt die pos. Zahl direkt auswerten und dann bei einer neg. Zahl mit BV im NOT-Modus arbeiten und dann noch mit AR + 1 addieren, und ein paar Sprünge im Programm ;) , dann funktioniert es auch so.
mfG Jan
-
Hallo heho,
danke für die Überarbeitung, habe den BV im Bausteinplan noch gelöscht, da er nicht benötigt wird.
mfG Jan
-
Hallo Jan,
schau dir mal diesen (http://de.wikipedia.org/wiki/Zweierkomplement) Link an. Ich denke dort ist genau das beschrieben wie Easy-intern das ganze verarbeitet wird. Wie in deinem ersten Beitrag vermutet gibt es doch ein Vorzeichenbit, da in den Werteeingaben (aus z.B. LS Baustein) ein Wert von -2147483648 bis +2147483648 eingegeben werden kann. 232 ist jedoch 4,295x109, also genau das doppelte. Vielleicht hilft dir dies ja doch weiter um einfacher umzuwandeln zu können.
Gruss
Jürgen