W jaki sposób liczby całkowite są wewnętrznie reprezentowane na poziomie bitowym w Javie?

Próbuję zrozumieć, jak Java przechowuje wewnętrznie liczbę całkowitą. Wiem, że wszystkie podstawowe liczby java są podpisane (z wyjątkiem krótkich?). Oznacza to, że jeden bit jest mniejszy w bajcie dla liczby.

Moje pytanie brzmi, czy wszystkie liczby całkowite (dodatnie i ujemne) są przechowywane jako uzupełnienie dwójkowe lub czy są tylko liczby ujemne w uzupełnieniu dwóch?

Widzę, że specyfikacja mówix bit two's complement number. Ale często się mylę.

Na przykład:

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

Edytować

Być jasnym,x = 15

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

Więc jeśli masz odpowiedźall liczby są przechowywane jako uzupełnienie dwóch, a następnie:

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

Zamieszanie tutaj znowu jest znakiem, oba są liczbami ujemnymi. Być może źle to rozumiemy?

Edytować Nie jestem pewien, czy moje pytanie jest mylące. Musimy wyizolować pytanie:

Moje pytanie dokładnie: czy są przechowywane liczby dodatniebinary as is podczas gdy liczby ujemne są przechowywane jakotwo's complement?

Niektórzy twierdzą, że wszystkie są przechowywane w uzupełnieniu dwóch, a jedna odpowiedź mówi, że tylko liczby ujemne są przechowywane jako uzupełnienie dwóch.

questionAnswers(10)

yourAnswerToTheQuestion