Wie werden Ganzzahlen in Java auf Bit-Ebene intern dargestellt?

Ich versuche zu verstehen, wie Java Integer intern speichert. Ich weiß, dass alle primitiven Java-Ganzzahlen signiert sind (außer kurz?). Das bedeutet, dass in einem Byte ein Bit weniger für die Nummer verfügbar ist.

Meine Frage ist, ob alle ganzen Zahlen (positive und negative) als Zweierkomplement gespeichert sind oder nur negative Zahlen im Zweierkomplement?

Ich sehe, dass die Spezifikationen sagtx bit two's complement number. Aber ich werde oft verwirrt.

Zum Beispiel:

  int x = 15; // Stored as binary as is?  00000000 00000000 00000000 00001111?
  int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010

Bearbeiten

Deutlich sein,x = 15

   In binary as is: `00000000 00000000 00000000 00001111'
  Two's complement: `11111111 11111111 11111111 11110001`

Also, wenn Ihre Antwort istall Zahlen werden dann als Zweierkomplement gespeichert:

  int x = 15; // 11111111 11111111 11111111 11110001
  int y = -22 // 11111111 11111111 11111111 11101010

Die Verwirrung hier ist wieder das Vorzeichen, beide sind negative Zahlen. Vielleicht verstehe ich es falsch?

Bearbeiten Ich bin mir nicht sicher, ob meine Frage verwirrend ist. Zur Eingrenzung der Frage gezwungen:

Meine Frage genau: Sind positive Zahlen in gespeichert?binary as is während negative Zahlen als gespeichert werdentwo's complement?

Einige sagten, dass alle im Zweierkomplement gespeichert sind und eine Antwort besagt, dass nur negative Zahlen als Zweierkomplement gespeichert sind.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage