Вы когда-нибудь задумывались, как компьютер хранит в памяти числа с единицами и нулями?

Слышали ли вы о типизированном языке, таком как Java, который должен менять тип данных, когда числа становятся все больше и больше, иначе в приложении возникнет проблема с утечкой памяти.

Эта статья расскажет нам на более высоком уровне, как понять эту числовую концепцию на типизированном языке и как числа со знаком хранятся в памяти.

Числовые типы данных

Во-первых, давайте посмотрим, сколько различных типов числовых данных имеется в Java и как они коррелируют друг с другом.

Судя по изображению выше, наименьшее пространство памяти для хранения одного числового данных — это байт. Далее в статье мы увидим, что диапазон номеров может храниться в 1 байте памяти.

В типизированном языке, таком как Java, когда мы определяем число x с типом данных short, приложение блокирует и выделяет 2-байтовую память в хранилище памяти для хранения этого значения x.

Биты и байты

Мы уже упомянули, что все в компьютере сводится к 0 и 1. Так как же выглядит байт в памяти с нулями и единицами?

По сути, 1 байт равен 8 битам. Наименьший компонент в пространстве памяти компьютера известен как «бит». Перестановка 0 и 1 в байте представляет собой диапазон числовых данных, которые может хранить 1 байт.

10110
= 2^4 + 2^2 + 2^1
= 16 + 4 + 2
= 22

Например, чтобы сохранить в памяти число 22, оно будет представлено как 10110.

Числа со знаком

Вы когда-нибудь задумывались, как числа со знаком (например, -10, 0, +20) хранятся в памяти?

По сути, — и + представлены одним битом, 1 и 0 соответственно. Так как же тогда он хранился вместе с номером?

В этой статье мы объясним наиболее часто используемое представление дополнения до двух.

Самый левый бит (он же самый старший бит, он же MSB, он же старший бит) в типе данных представляет…