In deinem Fall sollte das auch mit dieser Funktion klappen. In dieser Funktion wird dann dein int16_t so behandelt als ob es ein uint16_t sei. ABER: Es wird ja nicht gerechnet sondern nur gespeichert. Es geht, in diesem Fall, nichts verloren. Auch beim lesen, kommt dann genau die Zeichenfolge wieder raus.
Diese Warnung ist dann wichtig, wenn du damit rechnest. Hier wäre bsp. -7 als uint16_t 32768+7 (Zweierkomplement). Aber die Bitfolge ist exakt dieselbe. Das 2^15 Bit ist das Vorzeichenbit. Bei uint16_t ist das ein einfacher Summand in der Zahl wie jede andere Zahl auch. Bei int16_t ist das 2^15 Bit das Vorzeichen.
Warum machen die Prozessoren das so? Weil mit dem Zweierkomplement eine Subtraktion fast wie eine Addition ausgeführt werden kann![]()
Gruß
Georg
Lesezeichen