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