Dies ist ein Zweifel in Bezug auf die Darstellung von Bits vorzeichenbehafteter Ganzzahlen. Wenn Sie beispielsweise -1 darstellen möchten, entspricht dies dem Zweierkomplement von (+1). Also wird -1 als 0xFFFFFFF dargestellt. Jetzt, wenn ich meine Zahl um 31 verschiebe und das Ergebnis drucke, kommt es als -1 zurück.Bits Repräsentation von negativen Zahlen
signed int a = -1;
printf(("The number is %d ",(a>>31));//this prints as -1
Also kann mir bitte jemand erklären, wie die Bits für negative Zahlen dargestellt werden?
Danke.
Betrachten wir es aus einem anderen Blickwinkel: man denke an irgendeine N-Bit (Vorzeichen verlängernde) Rechtsverschiebung als Division durch 2^N, Abrunden nach UNTEN (gegen minus unendlich, nicht gegen 0.) Also -1 nach rechts verschoben (mit Vorzeichen) Verlängerung) wird immer -1 produzieren. – vladr