Datentyp Byte, Word, DWord ..



  • Huhu,

    wie heißen in C++ die Datentypen für unsigned Byte, unsigned Word und unsigned DWord? Btw.. gibt's die überhaupt signed? Naja, hab's zur Sicherheit mal zugeschrieben. Danke schonmal!



  • signed char
    signed short
    signed int
    unsigned char
    unsigned short
    unsigned int

    Die Größe der Datentypen wird leider nicht garantiert bzw. ist nicht festgelegt.



  • Zuerst musst du einmal festlegen was du unter nem word verstehst.
    Der ideale Typ für eine Plattform ist int.

    Unter *NIX ist int und word das gleiche, aber windows ist da etwas komisch die haben word von 16bit nicht auf 32bit erhöht beim wechsel von 16 zu 32bit sondern einfach nen neuen typ eingeführt dword (btw. int ist da auf 64bit cpus weiterhin 32bit, aus den gleichen dubiosen gründen).



  • "wird nicht garantiert"

    bedeutet das, dass die datentypen auf unterschiedlichen maschinen unterschiedliche größen haben?

    und.. gibt es eine möglichkeit, einen datentyp zu spezifizieren, der UNBEDINGT UND GENAU 8, 12, 16 Bit hat, etc.?

    Danke schonmal



  • Danke,

    mit Byte meine ich 8 Bit,
    mit Word 16 Bit
    und DWord 32 Bit



  • sorry, den letzten Beitrag hat nicht der Prof, sondern ich, verfasst.



  • NULL_HIRN schrieb:

    "wird nicht garantiert"

    bedeutet das, dass die datentypen auf unterschiedlichen maschinen unterschiedliche größen haben?

    und.. gibt es eine möglichkeit, einen datentyp zu spezifizieren, der UNBEDINGT UND GENAU 8, 12, 16 Bit hat, etc.?

    Danke schonmal

    Ja, unteschiedliche Größe auf unterschiedlichen Maschinen (evtl. sogar bei unterschiedlichen Compilern, so genau kenn ich mich da nicht aus).
    Genau spezifiziern kannst du das nicht. Unter MSVC++ gibt es immerhin __int8, __int16, __int32, __int64.



  • Stimmt so nicht ganz, man kann schon auf Bitgröße gehen mit den Bitfeldern:

    struct 7Bit
    {
      unsigned char bits : 7
    };
    

    Aber native Typen beschränken sich alle auf Bytegröße, bei Bitfeldern ist uU auch das Alignment nicht mehr auf Byteebene sondern auf Bitebene, was bedeutet, dass der Zugriff absolut unperformant ist. Daher empfiehlt es sich mit ner Bitmaske die Bitanzahl zu beschränken.



  • Hab's mal durchgetestet und funktioniert super! Danke euch allen. 🙂


Anmelden zum Antworten