Байты и диапазон числа в Java
Диапазон целого числа складывается из того, сколько бит отведено под значение в памяти. Чем больше бит, тем больше разных чисел помещается в одну ячейку.
Самая мелкая клетка памяти - бит. В бите только
два состояния: 0 или 1. Восемь бит
составляют один байт.
Каждый новый бит удваивает количество разных чисел.
Начинаем с единицы и удваиваем восемь раз: 2,
4, 8, 16, 32, 64,
128, 256. В одном байте помещается
256 разных чисел.
В Java целые типы знаковые: часть значений уходит
в минус. На отрицательные отдают половину,
128 значений: от -128 до -1.
Вторая половина - ноль и положительные числа
от 1 до 127. Диапazon одного байта
получается от -128 до 127.
Два байта - это 16 бит. Вторые восемь бит
умножают число вариантов еще на 256,
получается 65536 разных чисел. Половина,
32768 значений, уходит в минус: от
-32768 до -1. Ноль и плюс занимают
значения от 0 до 32767.
Тот же прием работает и для больших размеров: каждые
новые 8 бит умножают число вариантов на
256. Четыре байта - 32 бита,
восемь байт - 64 бита, вариантов еще
в 256 раз больше.
Сведем типичные размеры знакового целого в таблицу:
| Размер | Бит | Диапazon |
|---|---|---|
1 байт
|
8
|
от -128 до 127
|
2 байта
|
16
|
от -32768 до 32767
|
4 байта
|
32
|
от -2147483648 до 2147483647
|
8 байт
|
64
|
от -9223372036854775808 до 9223372036854775807
|
Дробное число тоже занимает фиксированное число байт.
Вариантов в этих битах конечное количество, и не каждая
обычная дробь в них попадает точно. Дробь 1/3
в десятичной записи не кончается. В битах так же
не кончается, например, 0.1. В отведенные
байты попадает близкое значение, поэтому дробное
часто хранится приблизительно.
В Java для чисел есть разные типы. Они занимают разное количество байт, и диапазон у них поэтому разный. Дальше в уроках раздела будем разбирать эти типы по именам.
Сколько бит в одном байте?
Сколько разных чисел помещается в один байт?
Число занимает 1 байт и хранит знак.
Какой диапазон оно может хранить?
Сколько бит в двух байтах?
Сколько разных чисел помещается в два байта?
Число занимает 2 байта и хранит знак.
Какой диапазон оно может хранить?