Hallo, ich stehe hier momentan etwas auf dem Schlauch und weis nicht so recht weiter. Ich habe eine 16-Bit Zahl $8000-$FFFF (negativ), $0000-$7FFF (positiv). Diese möchte ich nun auf auf meinem LCD darstellen. Im Positiven Bereich auch kein Problem, den Negativen bereich erkenne ich durch MSB=1. Wie muß ich jetzt rechnen, damit aus $FFFF wieder eine 1 wird und aus $8000 eine 32768. Danke für eure Hilfe, Tubie
Bitkomplement der vorzeichenbehafteten Zahl bilden und 1 addieren... z.B. 0xFFFF -> invertieren (Bitkomplement) gibt 0x0000, plus eins ist 0x0001. Also 0xFFFF -> -1
ist signed 0x8000 nicht "-0" und 0xffff "-32767"? Vorzeichen umdrehen würde ich bei einer signed Zahl durch togglen des MSB. Wert bleibt gleich, nur das Vorzeichen ändert sich.
Der Johannes hat schon recht. So ist es richtig. Negative Zahlen werden im 2-er Komplement dargestellt. Siehe http://de.wikipedia.org/wiki/Zweierkomplement
Gregor B. wrote: > ist signed 0x8000 nicht "-0" und 0xffff "-32767"? > Vorzeichen umdrehen würde ich bei einer signed Zahl durch togglen des > MSB. Wert bleibt gleich, nur das Vorzeichen ändert sich. Nein. Schon mal was von Zweierkomplement gehört? Wenn nicht, dann google mal danach oder schau bei Wikipedia. 0xFFFF ist -1 und 0x8000 ist -32768! "-0" gibt es nicht, würde auch keinen Sinn machen, zweimal die Null in einem Wertebereich zu haben...
BTW: Falls es nicht klar sein sollte: Wenn man von der Zahl Null (also 0x0000) eine Eins abzieht, dann gibts einen Underrun und es kommt 0xFFFF raus. Dementsprechend muss die "-1" in der Darstellung dem Wert 0xFFFF entsprechen, damit man überhaupt damit rechnen kann. Und das ist ja der Witz an der Zweierkomplement-Darstellung...
falls du das Speichermonster (zuminderst für kleinere MCs) (s)printf() benutzt - mit dem Parameter %d erledigt die Vorzeichenbehandlung.
WOW! das ging ja wirklich fix! Vielen Dank für die Antwort. Ist ja wirklich ne ganz einfache Sache... Gruß, Tubie
@crazy horse Ich programmiere ASM - C habe ich leider nie gelernt :( Gruß, Tubie
Warum werden neg. Zahlen gern im 2-er Komplement dargestellt ? Weil dann die normale binäre Addition bzw. Subtraktion mit positiven, negativen und "gemischten" Zahlen funktioniert. Das Vorzeichen muss dann nicht besonders beachtet werden. MfG Willi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.