unsigned/signed short/int-Konvertierung

Ich studiere signed-unsigned-integer-Konvertierungen und ich kam zu diesen Schlussfolgerungen kann mir jemand sagen, ob dieser korrekt ist, können Sie

unsigned short var = -65537u;

Schritte:

  • 65537u (implizit in unsigned int)

Binäre Darstellung:
0000 0000 0000 0001 0000 0000 0000 0001

  • -65537u

Binäre Darstellung: 1111 1111 1111 1110 1111 1111 1111 1111

  • Abgeschnitten, zu kurz

Binäre Darstellung: 1111 1111 1111 1111

  • Lesen als unsigned short: 65535

Das gleiche gilt für die folgenden Fälle:

unsigned short var = -65541u;
  • 65541u (unsigned int)

0000 0000 0000 0001 0000 0000 0000 0101

  • -65541u

1111 1111 1111 1110 1111 1111 1111 1011

  • Abgeschnitten, zu kurz

1111 1111 1111 1011

  • Lesen als unsigned short: 65531

unsigned short var = -5u;
  • 5u (unsigned int)

0000 0000 0000 0000 0000 0000 0000 0101

  • -5u

1111 1111 1111 1111 1111 1111 1111 1011

  • Abgeschnitten, zu kurz

1111 1111 1111 1011

  • Lesen als unsigned short: 65531
  • Die Sprachen haben nur minimalen Größen für int und short (Sie könnten die gleiche Größe haben, oder nicht) sowie die verschiedenen binären Repräsentationen. Sie haben einige sehr spezifische Annahmen, die nicht universell gültig. Zum Beispiel 5 und -5 möglicherweise unterscheiden sich nur im Vorzeichen-bit.
  • Es ist wahr, dass -5 kann nicht dargestellt werden in 2 ergänzen, aber das ist nicht relevant für die Frage, wie die Frage sich nicht um alle negative Zahl. In dieser Frage, unäre negation ist nur bei unsigned-Typen. Zum Beispiel -65537u wird analysiert, wie -(65537u).
Schreibe einen Kommentar