Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Wie kann ich negative Zahlen in WORD auswerten Kategorie: Programmierung Basic (von Pit Demmer - 28.01.2005 21:27)
 Als Antwort auf Wie kann ich negative Zahlen in WORD auswerten von JanPeter - 28.01.2005 20:25

>
> Hallo !
>
> Ich habe folgendes Problem :
>
> Ich habe eine WORD-Variable z.B. 56235 , wie kann ich auswerten  , das die Variable jetzt negativ ist.
>
> Bis 32767 geht ja alles , aber ab -32768 habe ich ein Problem ?
>
> Am LCD bekomme ich -9300 angezeigt.
> Wenn ich mit dem Taschenrechner rechne 32768-9300=23468  + 32767 =56235
> Wie kann ich den negativen Wertebereich z.B. durch eine IF-Anweisung erkennen?
>
> Vielen Dank im Vorraus.
> MfG+
> JanPeter
>

Du hast mit dem Taschenrechner doch schon alles erkannt!
Ein Word kann 2hoch16 (65536) verschiedene Zustände/Zahlen darstellen.
Um auch negative Zahlen darstellen zu können, werden 15 Bits zum "zählen" verwendet, und das letzte Bit dient dazu um anzuzeigen, ob der Wert mit negativem Vorzeichen behaftet ist oder nicht.
2hoch15 ist 32768 bleiben also sowohl für den negativen als auch für den positiven Bereich an darstellbaren Zahlen übrig... fehlt nur noch die Null, die wird dem positiven Bereich zugewiesen, darum ist bei 32767 schluss, negativ geht aber einer mehr (-32768).
Wenn man einer Word-Variable, die Vorzeichenfähig ist nun einen Wert grösser 32767 zuweist, muss das 16te Bit gesetzt werden, somit ist die Zahl mit Vorzeichen behaftet.
Fachsprachlich produzierst Du mit Deiner Zuweisung einen Ãœberlauf.

Erkennen könntest Du den Überlauf fall z.B. so:

Define Wert word[1]
Define Zahl1 word[2]
Define Zahl2 word[3]
'
'
'
Wert = Zahl1 + Zahl2

If Wert < 0 then goto UeberLauf else goto OkSo


Besser weil schneller ist:

Define Wert word[1]
Define NegBit Bit[16]    'Position des VorzeichenBits von word[1]
Define Zahl1 word[2]
Define Zahl2 word[3]
'
'
'
Wert = Zahl1 + Zahl2

If NegBit then goto UeberLauf else goto OkSo



Noch Besser ist es, vor der Berechnung die Sache zu klären, lässt sich alles Bitweise ausbaldovern!
Genau genommen ist es aber auch egal, 16 Bits sind 16 Bits, Bitweise arbeitet das System ja auch völlig korrekt, im Zweifelsfall die Dezimale Umsetzung überhaupt nicht betrachten, sondern die Binäre Lösung anwenden.

Pit

 Antwort schreiben

Bisherige Antworten:

Re: Wie kann ich negative Zahlen in WORD auswerten (von JanPeter - 28.01.2005 22:18)
    Re: Wie kann ich negative Zahlen in WORD auswerten (von Pit Demmer - 28.01.2005 22:49)
        Re: Wie kann ich negative Zahlen in WORD auswerten (von JanPeter - 29.01.2005 0:17)