Ответ
В Java из восьми примитивных типов шесть могут представлять отрицательные числа, а два — не могут.
Типы, хранящие отрицательные значения (знаковые):
| Тип | Размер | Диапазон (включая отрицательные) | Пример |
|---|---|---|---|
byte |
8 бит | от -128 до 127 | byte b = -100; |
short |
16 бит | от -32,768 до 32,767 | short s = -30_000; |
int |
32 бита | от -2³¹ до 2³¹-1 | int i = -2_147_483_648; |
long |
64 бита | от -2⁶³ до 2⁶³-1 | long l = -9_223_372_036_854_775_808L; |
float |
32 бита | ~±1.4E-45 до ~±3.4E+38 | float f = -3.14f; |
double |
64 бита | ~±4.9E-324 до ~±1.8E+308 | double d = -2.71828; |
Типы, НЕ хранящие отрицательные значения:
char(16 бит, беззнаковый): Представляет символы Unicode в диапазоне от 0 до 65,535.boolean(точный размер не определён): Может содержать только значенияtrueилиfalse.
Ключевое отличие: Типы byte, short, int, long используют дополнительный код (two's complement) для представления отрицательных чисел, что делает арифметические операции эффективными. Типы float и double используют стандарт IEEE 754, где знак хранится в отдельном бите.