Вы когда-нибудь задумывались, как компьютер хранит в памяти числа с единицами и нулями?
Слышали ли вы о типизированном языке, таком как 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, он же старший бит) в типе данных представляет…