- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 12

Thema: gemischter Vergleich mit signed und unsigned

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo sternst,
    also mit deiner Vermutung daß der Short kleiner ist als der Int, gebe ich Dir erstmal recht.


    Aber nun werde ich mal versuchen was mir das sagt:

    Der Short hat in meinem Falle eine Bitbreite von 16.
    Demnach bei einem "signed short " einen Wertebereich von -32768 bis+32767

    Der int hat 32 Bits also bei einem signed int -2147483648 bis +2147483647

    -1 wird in signed 16 Bit als 0xFFFF dargestellt.
    -1 mit 32 Bit ist 0xFFFFFFFF

    +12 ist in 16 Bit 0x000C
    +12 in 32 Bit ist 0x00000000C

    jetzt die Abfrage
    if (0xFFFF < 0x000C) würde FALSE ergeben, wenn ich die Werte ohne Vorzeichen behandele,
    denn 65535 ist NICHT kleiner als 12
    TRUE wenn ich die Vorzeichen beachte, weil -1 nunmal kleiner ist als +12
    Das Ergebnis des Compilers ist richtig, er liefert TRUE, hat also anscheinend das Vorzeichen richtig beachtet.
    Würde er ohne Vorzeichen arbeiten wäre das Ergebnis FALSE weil 65535 NICHT kleiner ist als 12
    Also ist das Ergenis einwandfrei bei 16 Bit Operationen.

    nun der Fall für 32 Bit
    if (0xFFFFFFFF < 0x000000C) würde FALSE ergeben, wenn ich die Werte ohne Vorzeichen behandele.
    TRUE wenn ich die Vorzeichen beachte.
    Das Ergebnis des Compilers ist aber FALSCH, er behandelt das Vorzeichen anscheinend nicht
    und deshalb ist 4294967296 nicht kleiner als 12 und damit liefert er FALSE, was halt FALSCH ist.

    Im Prinzip ist es mir eagal ob er die Mischung von signed und unsigned nicht hinbekommt, dann aber bitte konsequent
    immer falsch, aber bitte nicht Bitanzahl abhängig.

    Mir ist der Arbeitsweise hier leider nicht einleuchtend. Vielleicht denke ich immer noch zu viel in Assembler ???

    Eigentlich spielt das doch gar keine Rolle wie viele Bits ich für einen signed bzw. unsigned benutze. Dafür
    gibt es doch eine Rechenvorschrift, die hier anscheinend nicht immer identisch "verhackstückt" wird.

    Ich verstehe es wirklich nicht,
    komme nicht dahinter,
    Siro
    Geändert von Siro (30.11.2011 um 18:38 Uhr)

Ähnliche Themen

  1. unsigned volatile long ??
    Von Ali_Baba im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 04.03.2009, 20:31
  2. Warum uint16_t statt unsigned int?
    Von ricola im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 05.07.2007, 17:38
  3. Signed integer-Werte Vergleichen
    Von *Mario* im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 21.06.2006, 11:09
  4. 16Bit unsigned integer auf AVR
    Von cumi im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 13.04.2006, 20:07
  5. Signed or Unsigned
    Von Arexx-Henk im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 13.02.2006, 16:05

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests