Wertebereich von INT Variablen



  • Hallo Forum,

    ich als Anfänger in Sachen C++ wollte einen kleinen HEX nach DECIMAL-Konverter schreiben und bin dabei auf folgendes Problem gestoßen:

    ich wollte eine Ausgabe im +/- Format! Also alle Hex-Werte von 0x0 bis 0x7fff sind positiv und von 0x800 bis 0xffff wird es negativ! Dazu habe ich folgende Quelltext:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
    int value;
    cout << "Type in the HEX-Value: ";
    cin >> hex >> value;
    cout << "The Corresponding DEC-Value is: " << dec << value;
    return(0);
    }
    

    Die Ausgabe ist aber stets positiv als ob es unsigned wäre!
    Was mache ich falsch?

    Gruß Martin



  • Hi,

    Was ich so auf den ersten Blick gesehen hab, ist 0x7fff ein 16 Bit Wert.
    Auf 32 Bit Maschinen hat ein Integer aber in aller Regel 32 Bit.
    Drum is immer alles Positiv 😉

    mfg
    martin

    PS: die Größe in Bytes eines Datentypes erhältst du mit sizeof(Typ) also z. B.:
    cout<<sizeof(int);



  • std::numeric_limits<int>::max sagt dir den Maximalwerrt (definiert in <limits>)



  • Was alles nichts daran aendert das das Programm funktioniert. Das einzige was du aendern musst ist deine Eingabe, also zumindistens wenn du einen positivern hex Wert eingeben willst und einen negativen dezimal Wert bekommen willst.



  • Hmm! Das verstehe ich nicht ganz! Ich habe gerade mal eben nachgesehen! Tatsächlich sind 4 Byte für integer bei mir reseviert. Dann müßte es aber mit der Eingabe 0xffffffff eine -1 zu sehen sein...oder?

    Tut es bei mir aber nicht! Ich bekomme immer eine 4370436 als Ausgabe!

    Gruß vom Ratlosen



  • Du musst einen unsigned einlesen, sonst setzt er das Vorzeichenbit nicht beim eim einlesen der hex Zahl

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    {
    int value;
    unsigned hexval;
    
    cout << "Type in the HEX-Value: ";
    cin >> hex >> hexval;
    
    value = hexval;
    
    cout << "The Corresponding DEC-Value is: " << dec << value<<endl;
    return(0);
    }
    

    Gruß
    Entyl Sa



  • Aaaahhh! Jetzt geht´s! Vielen Dank!

    By the way! Gibt es eigentlich so eine Art Spec über sämtliche Befehle, includes mit ihren Optionen usw. von C++ ???

    Gruß vom Glücklichen



  • Schau mal im Forum - die Frage scheint momentan ganz aktuell zu sein...


Anmelden zum Antworten