Negativ Ausgabe ACTION!

Bild Alles zum Thema Programmierung
Bild All around programming

Moderatoren: Sven, Sleepy, Wolfgang, cas, des-or-mad

Negativ Ausgabe ACTION!

Beitragvon Cash » Mi 7. Jan 2015, 19:15

Hi,
ich möchte eine kleine Function schreiben die der SGN Funktion in Basic entsprechen soll.

Mein code bisher:

Code: Alles auswählen
Byte Func Signum(int x)
Int SGN
If x>0 then SGN=1
Elseif
x=0 then
SGN=0
Elseif x<0 then
SGN=-1
Fi
Return(SGN)

Proc Main()
INT Y, Zahl
Y=-2
Zahl=Signum(Y)
Position(5,5)
PrintIE(Zahl)
Return



Das Ergebnis bei 0 oder >0 ist ok, aber bei <0 sollte eigentlich eine -1 als Ergebnis kommen stattdessen bekomme ich eine 255?!
Kann mir bitte jemand erklären was ich falsch gemacht habe bzw. wie ich es machen sollte?
gruß
cash

Atari8bit-Yuppie
Benutzeravatar
Cash
Super Poster
Super Poster
 
Beiträge: 807
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Melle/Niedersachsen

Re: Negativ Ausgabe ACTION!

Beitragvon Sven » Mi 7. Jan 2015, 19:50

Ohne Ahnung von Action zu haben mal ein Schuss ins Blaue:

Int x interpretiere ich als Integer und würde annehmen das x einen Wert (8Bit) annehmen kann - 0 bis 255 (unsigned).

Für eine Darstellung von negativen Zahlen brauchst du wohl eine signed-Variable die bei 8bit den Bereich von -127 bis 128 annehmen kann.

Mal schauen ob es jetzt für mich peinlich wird :P
Benutzeravatar
Sven
Star Poster
Star Poster
 
Beiträge: 761
Registriert: Do 1. Jan 1970, 01:00

Re: Negativ Ausgabe ACTION!

Beitragvon mp-one » Mi 7. Jan 2015, 21:21

Hi Cash,

mach mal aus der BYTE FUNC SIGNUM eine INT FUNC SIGNUM. INT ist ein 16-Bit-Typ, der Werte von -32768 bis 32767 aufnehmen kann, BYTE dagegen ein 8-Bit-Typ, der Werte von 0...255 speichern kann. Wenn Du nun ein INT als BYTE zurückgibst, "säbelst" Du den Wert in der Mitte durch mit dem beschriebenen Effekt. CARD ist ebenfalls ein 2-Byte-Typ, speichert aber nur Werte von 0..65535.

Gruß
Benutzeravatar
mp-one
Star Poster
Star Poster
 
Beiträge: 757
Registriert: Do 1. Jan 1970, 01:00

Re: Negativ Ausgabe ACTION!

Beitragvon Sven » Mi 7. Jan 2015, 21:42

Nah dran... ;)
Benutzeravatar
Sven
Star Poster
Star Poster
 
Beiträge: 761
Registriert: Do 1. Jan 1970, 01:00

Re: Negativ Ausgabe ACTION!

Beitragvon Cash » Mi 7. Jan 2015, 22:09

Danke jetzt geht's. Das mit Integer wusste ich auch, hatte auch alle Bytes in INT's umgeschrieben nur das vor der Funktion übersehen. :oops:
gruß
cash

Atari8bit-Yuppie
Benutzeravatar
Cash
Super Poster
Super Poster
 
Beiträge: 807
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Melle/Niedersachsen

Re: Negativ Ausgabe ACTION!

Beitragvon FlorianD » So 11. Jan 2015, 16:13

das müßte auch so gehen, kürzer und schneller
Code: Alles auswählen
INT FUNC sig(int x)
if x<0
return(-1)
 else
return(1)
fi
RUN $E477
--
Benutzeravatar
FlorianD
Night&Day Poster
Night&Day Poster
 
Beiträge: 1615
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Frankfurt am Main


Zurück zu Programmierung



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron