Я пытаюсь понять, как Java хранит целое число внутри. Я знаю, что все java-примитивные целые числа подписаны (кроме коротких?). Это означает, что для байта доступно меньше бит в байтах.
Мой вопрос: все ли целые числа (положительные и отрицательные) хранятся как два дополнения или являются только отрицательными числами в двух дополнениях?
Я вижу, что спецификации говорят x bit two complement number
. Но я часто путаюсь.
Например:
int x = 15; // Stored as binary as is? 00000000 00000000 00000000 00001111?
int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010
Edit
Чтобы быть ясным, x = 15
In binary as is: `00000000 00000000 00000000 00001111'
Two complement: `11111111 11111111 11111111 11110001`
Итак, если ваш ответ all
, цифры сохраняются как два дополнения, а затем:
int x = 15; // 11111111 11111111 11111111 11110001
int y = -22 // 11111111 11111111 11111111 11101010
Смятение здесь снова означает, что знак говорит, что оба являются отрицательными числами. Может быть, я неправильно понимаю/не понимаю?
Edit Не уверен, что мой вопрос запутан. Вынужден, чтобы изолировать вопрос:
Мой вопрос точно: положительные числа хранятся в binary as is
, а отрицательные числа сохраняются как two complement
?
Некоторые говорят, что все хранятся в двух дополнениях, и один ответ говорит, что только отрицательные числа хранятся как два дополнения.