Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktPmNuBR 24 of 522 menu
◀ ▶

Байты и диапазон числа в Kotlin

Давайте теперь посмотрим, как из байтов получается диапазон числа.

Самая мелкая клетка памяти - бит. В бите только два состояния: 0 или 1. Восемь бит составляют один байт.

Каждый новый бит удваивает количество разных чисел. Начинаем с единицы и удваиваем восемь раз: 2, 4, 8, 16, 32, 64, 128, 256. В одном байте помещается 256 разных чисел.

Если знак не нужен, все 256 чисел идут от нуля вверх. Ноль тоже занимает одно значение, поэтому последнее число на единицу меньше 256. Диапазон получается от 0 до 255.

Если знак нужен, те же 256 чисел делят между минусом и плюсом. На отрицательные отдают половину, 128 значений: от -128 до -1. Вторая половина - это ноль и положительные числа от 1 до 127. Диапазон получается от -128 до 127.

Два байта - это 16 бит. Первые восемь мы уже посчитали, это 256. Вторые восемь умножают результат еще на 256, получается 65536 разных чисел. Без знака они идут от 0 до 65535. Со знаком половина, 32768 чисел, уходит в минус: от -32768 до -1. Ноль и плюс занимают значения от 0 до 32767.

Тот же прием работает и для больших размеров: каждые новые 8 бит умножают число вариантов на 256. Четыре байта - это 32 бита и 4294967296 разных чисел. Восемь байт - 64 бита, вариантов еще в 256 раз больше.

Сведем типичные размеры целого числа в таблицу:

Размер Бит Без знака Со знаком
1 байт 8 от 0 до 255 от -128 до 127
2 байта 16 от 0 до 65535 от -32768 до 32767
4 байта 32 от 0 до 4294967295 от -2147483648 до 2147483647
8 байт 64 от 0 до 18446744073709551615 от -9223372036854775808 до 9223372036854775807

Дробное число тоже занимает фиксированное число байт. Вариантов в этих битах конечное количество, и не каждая обычная дробь в них попадает точно. Дробь 1/3 в десятичной записи не кончается: за нулем идут тройки без конца. В битах так же не кончается, например, 0.1. В отведенные байты попадает близкое значение, поэтому дробное часто хранится приблизительно.

В Kotlin для чисел есть разные типы. Они занимают разное количество байт, и диапазон у них поэтому разный. Дальше в уроках будем разбирать эти типы.

Сколько бит в одном байте?

Сколько разных чисел помещается в один байт?

Число занимает 1 байт и не хранит знак. Какой диапазон оно может хранить?

Число занимает 1 байт и хранит знак. Какой диапазон оно может хранить?

Сколько бит в двух байтах?

Сколько разных чисел помещается в два байта?

Число занимает 2 байта и не хранит знак. Какой диапазон оно может хранить?

Число занимает 2 байта и хранит знак. Какой диапазон оно может хранить?

Сводная таблица диапазонов по размеру:

Размер Бит Без знака Со знаком
1 байт 8 от 0 до 255 от -128 до 127
2 байта 16 от 0 до 65535 от -32768 до 32767
4 байта 32 от 0 до 4294967295 от -2147483648 до 2147483647
8 байт 64 от 0 до 18446744073709551615 от -9223372036854775808 до 9223372036854775807
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить