Как целые числа внутренне представляются на битовом уровне в Java?JAVA

Программисты JAVA общаются здесь
Anonymous
Как целые числа внутренне представляются на битовом уровне в Java?

Сообщение Anonymous »

Я пытаюсь понять, как Java хранит целые числа внутри себя. Я знаю, что все примитивные целые числа Java подписаны (кроме коротких?). Это означает, что в байте числа для числа доступно на один бит меньше.
Мой вопрос: все целые числа (положительные и отрицательные) хранятся в виде дополнения до двух или только отрицательные числа в дополнении до двух?< /p>
Я вижу, что в спецификации указано число, дополняющее два бита x. Но я часто путаюсь.
Например:

Код: Выделить всё

  int x = 15; // Stored as binary as is?  00000000 00000000 00000000 00001111?
int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010
Изменить
Для ясности: x = 15:

Код: Выделить всё

   In binary as is: `00000000 00000000 00000000 00001111'
Two's complement: `11111111 11111111 11111111 11110001`
Итак, если ваш ответ — все числа сохраняются как дополнение до двух, тогда:

Код: Выделить всё

  int x = 15; // 11111111 11111111 11111111 11110001
int y = -22 // 11111111 11111111 11111111 11101010
Снова путаница в том, что на табличке указано, что оба числа являются отрицательными. Может быть, я неправильно читаю/не понимаю?
Изменить
Не уверен, что мой вопрос сбивает с толку. Вынужден изолировать вопрос:
Мой вопрос именно так: положительные числа хранятся в двоичном виде как есть, а отрицательные числа хранятся как дополнение до двух?< /strong>
Некоторые сказали, что все числа хранятся в формате дополнения до двух, а в одном ответе говорится, что только отрицательные числа хранятся в формате дополнения до двух.

Подробнее здесь: https://stackoverflow.com/questions/134 ... el-in-java

Вернуться в «JAVA»