Сколько битов займет слово любовь в памяти компьютера
Обновлено: 21.11.2024
Итак, я читал об адресных шинах и максимальных размерах памяти, поэтому у меня вопрос: при вычислении максимального размера памяти для любой архитектуры откуда берется 2 в 2 ^ n, где n - размер бит адресной шины? И что вообще означает «битовый размер»? Я так запутался.
@LPChip - "конденсаторы"? Теперь их называют конденсаторами, и я не знаю, чтобы из них делали компьютеры. Вы уверены, что не имеете в виду вакуумные трубки, также известные как клапаны?
@LPChip - предположительно, вы имеете в виду «конденсаторы», старое название того, что мы сейчас называем «конденсаторами»? Конденсаторы всегда пропускают переменный ток и никогда не пропускают постоянный ток. В этом вопросе нет выбора. Поэтому их нельзя использовать для создания компьютеров так, как вы себе это представляете.
Я рискну и предполагаю, что LPChip говорит по-немецки, потому что "Kondensator" — это немецкий термин, обозначающий "конденсатор" на английском языке.
Для бита выбрано не число 2, для числа 2 выбрано слово "бит"! В противном случае мы бы говорили о тритах или о чем-то еще
9 ответов 9
2 происходит из-за природы двоичных чисел, где у каждой цифры есть ровно 2 возможных состояния.
При расчете количества значений, которое может содержать заданное количество цифр, вычисление всегда производится по принципу Options^Instances . Параметры представляют собой набор возможных вариантов, которые может иметь цифра, а Экземпляры представляют количество используемых цифр (длина, ширина и размер являются общими синонимами).
Аналогичным образом, чтобы вычислить диапазон значений, которые могут быть сохранены, это 0 -> (Опции^Экземпляры) - 1 .
Обратите внимание, что числовые значения всегда являются натуральными числами, поэтому нас не беспокоят отрицательные числа, десятичные дроби или что-то более экзотическое. Эти понятия строятся поверх цифровых значений, чтобы увеличить их значение, но базовое представление значения не изменилось. 3, -3 и 3.3 выражают разные значения, но все они используют числовое значение 3 одинаковым образом и с одними и теми же правилами.
Таким образом, 2-битное число может выражать 4 возможных значения в диапазоне от 0 до 2^2-1 (0-3). Т.е. набор возможных значений .
цифра двоичного числа содержит 2 варианта, поэтому она является основанием-2. Наиболее распространенные системы счисления, используемые в наши дни, имеют 10 вариантов на цифру (0-9), поэтому они основаны на 10. Другие распространенные основания включают восьмеричное (основание-8) и шестнадцатеричное (основание-16).
Размер в битах означает количество битов, используемых для хранения значения (переменная "Экземпляры"). Например, в игре No Man's Sky для представления денег используется 32-битное число, поэтому вы никогда не сможете получить больше 4 294 967 295 денег. Это потому, что это максимальное значение, которое вы можете выразить в 32 битах.
Вероятно, следует указать, что это числовое "основание", поскольку в двоичном формате используется основание 2, в десятичном - основание 10 и так далее. Это может дать подсказки для будущих исследований и изучения систем счисления и причин для 2^n и 10^n.
Я думаю, что это максимальное количество гвоздиков и в играх Lego для Wii. Я никогда не думал, что это 32-битное ограничение.
Вы говорите: "Эта концепция не ограничивается даже числами, а представляет собой любой хорошо продуманный набор значений". Я думаю, вы имеете в виду "хорошо обозначенный", например, "это должна быть одна из этих возможностей". Возможности могут быть настолько плохо спроектированы, насколько вам нравится, если они непротиворечивы. ;)
Вот попытка ответить типа "объясни, как будто мне 5 лет".
Один бит имеет два состояния: 0 и 1 . Используя один бит, я могу хранить два значения:
Добавив один бит, мы можем сохранить четыре значения. Не будем обращать внимания на то, что это двоичные числа, просто имейте в виду, что это разные значения:
Добавьте еще одно, и у нас будет восемь значений:
Почему они удваиваются? Представьте, что вы добавляете новый бит слева. Если бит равен 0, вы получаете предыдущий набор из четырех значений, но с префиксом 0. Если это 1, вы получаете предыдущий набор из четырех значений с префиксом 1. Всего 8: 4 предыдущих значения, умноженные на 2 возможных состояния добавленного бита.< /p>
Вот графическая версия, если вам не нравится графика ASCII:
Если бы у нас было три возможных состояния для предшествующего "бита" ("trit"?), скажем, A , B и C , мы утроили бы количество возможных значений:
Поэтому добавление нового бита к значению умножает количество возможных значений на количество состояний, которые может иметь этот новый бит. Первый бит имеет 2 состояния (0 и 1), поэтому 1-битное число имеет 2 значения. Второй бит имеет два состояния:
Третий бит тоже имеет два состояния:
То же самое с четвертым битом:
Мы можем расширить 8 в этой формуле до наших предыдущих вычислений:
Как видите, чтобы получить количество возможных значений, нужно умножить количество состояний определенных битов. Поскольку все наши биты имеют 2 состояния, мы можем упростить умножение двойки n раз до просто 2 n .
Забавный факт: троичные компьютеры действительно существовали, и Дональд Кнут однажды сказал, что думает, что они вернутся.
Еще один забавный факт, который имеет косвенное отношение: вы можете выразить комплексные числа, используя только цифры 0,1,2,3 в четверном мнимом основании -2i
Позвольте мне дополнить существующие ответы аналогией: сколько различных чисел (назовем их адресами) можно составить из n-значного числа?
- 2 цифры могут составлять адреса от 00 до 99, то есть 100 адресов.
- 3 цифры могут составлять адреса от 000 до 999, то есть 1000 адресов.
- .
- В общем случае из n цифр можно составить 10^n адресов.
Это потому, что одна (десятичная) цифра имеет 10 возможных состояний (от 0 до 9, латинское decem = десять).
Биты похожи на цифры, за исключением того, что у них есть только 2 состояния (0 и 1). Следовательно, из n бит можно построить 2^n адресов.
Выводы A — это адресные выводы, а выводы D — выводы данных.
Имеется 16 контактов А, пронумерованных от 0 до 15.
Каждый контакт может быть включен или выключен (без промежуточных значений), так что у каждого контакта есть 2 возможных состояния.
Итак, существует 2^16 возможных состояний или 65 536 возможных адресов.
Выводы D используются для отправки (записи) или получения (чтения) данных с адреса. Так как их 8, вы можете прочитать/записать 2^8 возможных значений (0-255).
Современные процессоры сложнее, потому что они взаимодействуют с оперативной памятью по нескольким каналам, а передача сигналов для современной оперативной памяти сложнее из-за ее скорости, но по сути это та же концепция.
Многие ответы пытаются объяснить "бинарную" сторону этого, но может быть неясно, как это связано с архитектурой компьютера. Компьютеры работают с битами в порциях, которые называются «словами». В современных компьютерах размер слова обычно составляет 64 бита, и долгое время стандартный размер слова составлял 32 бита. Когда у вас есть целочисленный или беззнаковый целочисленный тип данных, все, что вы получаете, это одно слово из битов. Вы можете работать с большими числами, если напишете программное обеспечение для выполнения арифметических действий, но оно не встроено в машину, как целочисленные типы, состоящие из одного слова.
Это важно, потому что каждая ячейка памяти имеет адрес, который является просто числом. Предположим, вы работали с машиной 1980-х годов с 16-битными словами. Для целых чисел без знака вы можете представить 2 ^ 16 различных целых чисел, и это все адреса памяти, которые вы можете иметь. Это все равно, что заметить, что в США и Канаде может быть только десять миллиардов телефонов, потому что телефонные номера состоят только из десяти цифр. (На самом деле меньше из-за ограничений на допустимые номера телефонов.)
С 64-разрядными машинами вы можете адресовать гораздо больше памяти, чем когда-либо могли предоставить, но долгое время адресное пространство было реальным ограничивающим фактором.
Местами это слишком упрощает, но я надеюсь, что дает правильное общее представление.
Это хорошо объясняет, что означает размер в битах, но оставляет вопрос "2" без ответа. «2» связано с «битовыми состояниями», как упоминается в другом ответе (@Akina; больше голосов)
Не ответ на главный вопрос, поскольку я думаю, что другие более чем достаточно рассмотрели это выше, но конкретно расширяю:
Кроме того, что вообще означает "разрядность"?
В общем случае это означает количество двоичных цифр (битов), которые можно использовать для представления определенного объекта. В данном случае это количество битов, которые можно использовать для выражения адреса в памяти. Используя 8 бит, вы можете считать от 00000000 до 11111111, что составляет от 0 до 255 в десятичном виде, поэтому адресная шина размера 8 сможет поддерживать память длиной 256 слотов (один слот обычно представляет собой байт, 8 бит, хотя есть некоторые необычные архитектуры, где это не так).
Важно понимать, что может быть несколько разных "битовых размеров", связанных с процессором и окружающей его электроникой. Когда мы описываем X-битный ЦП, мы почти всегда имеем в виду размер его самых больших регистров общего назначения и его целочисленные арифметические устройства. ЦП 80386, по крайней мере, в его первоначальных вариантах, был полностью 32-битным: он имел 32-битные регистры общего назначения (поэтому изначально мог считать до 2 ^ 32 или от -2 ^ 31 до 2 ^ 31-1 при использовании со знаком). числа), 32-битная шина данных (чтобы можно было считывать до 32-бит за раз из памяти в один из этих регистров) и 32-битная адресная шина (чтобы напрямую адресовать 2 ^ 32 байта, 4 ГБ, из Память).Pentium Pro представляет собой гораздо более смешанный пакет: он считается 32-разрядным процессором, поскольку его регистры общего назначения и первичные арифметические устройства имеют такой размер, он имеет 36-разрядную адресную шину (поэтому может напрямую адресовать 64 Гб) и 64-разрядную шину данных. (хотя это напрямую не помогает загружать 32-битные регистры, это означало, что Pentium мог быстрее заполнять свой кэш на кристалле). 80386SX был аналогичным образом смешан: 32-битные внутренние компоненты, 24-битная адресная шина, 16-битная шина данных. Есть и другие сложности (с плавающей запятой, векторные регистры, сегментированная адресация, подкачка памяти и т. д.), но рассмотрение их было бы еще большим отклонением от темы.
Я не придираюсь, но 32-битное целое число в дополнении до 2 со знаком может представлять значения от -2^31 до 2^31-1, а не от -2^32 до 2^32-1. 32-битное целое число без знака может представлять только значения до 2^32-1.
Кроме того, что вообще означает "разрядность"?
Сам по себе ничего.
Но в "разрядности адресной шины" это размер шины:
- 6502 имеет адресную шину из 16 бит (и 2 ^ 16 означает максимум 64 КБ ОЗУ и ПЗУ)
- 8086 имеет 20-битную адресную шину (и 2^20 соответствует 1 МБ)
- 80386 имеет 32-битную адресную шину (4 ГБ)
Как компьютерный инженер, я лично считаю, что ни один из текущих ответов не дает полного ответа на заданный вопрос, хотя некоторые из них близки.
2^n дает диапазон чисел, доступный с n битами (хотя Груностай объясняет эту часть немного лучше). Это связано с тем, что бит — это двоичноедвоичное цифровое число, или одно место в системе счисления, в которой есть только два числа для счета (0 и 1 по сравнению с 0 -9 в десятичном формате, всего две цифры). Таким образом, диапазон в основном спрашивает, сколько уникальных чисел может быть получено с указанными местами в этой системе счисления. Как указано в другом ответе, это делается с показателями. Одно место содержит столько потенциальных значений, сколько цифр, два содержат цифры x цифры, три содержат цифры x цифры x цифры.
В сокращении это будут цифры^1, цифры^2 и цифры^3. Поскольку это двоичное число, цифры = 2, поэтому у нас есть 2 ^ разрядов, а разряды обычно задаются как n, поскольку в компьютере их физически подсчитывают, как я перейду к следующему.
Теперь битрейт адресной шины стал немного проще (и снова Хайнци уловил суть этого). Вы можете думать о памяти как о длинном ряду ящиков, каждому из которых присвоен номер. Вы можете добавлять или удалять вещи из этих ящиков, но вы должны знать, какой ящик вы хотите открыть первым. Поскольку компьютеры используют двоичный код, число должно быть представлено как 1 или 0. Но, и это важная часть, должно быть достаточно физического места для хранения номера ящика. Думайте об этом как о листе Scantron (и именно так они и работают, если уж на то пошло). Каждая точка на Scantron хранит одно место двоичного числа, и если мест недостаточно, компьютер не может получить доступ к более высоким номерам ящиков (адресам памяти) в этой строке. Таким образом, размер бит адресной шины — это просто количество битов в регистре (и, в конечном итоге, количество проводов физической шины, идущих к ОЗУ), которые сообщают памяти, какой адрес нужно найти. Как только вы использовали все возможные состояния проводов при выделении памяти, компьютер больше не может получить доступ, даже если он присутствует. (Кроме того, розетка вполне может быть несовместима, поскольку с каждой стороны будет разное количество проводов. В лучшем случае некоторые из них будут просто заземлены, чтобы они не использовались.)
Во всем этом проблема просто потому, что компьютеры вообще не понимают чисел. Во-первых, был выбран двоичный формат, потому что он может быть либо истинным, либо ложным, 1 или 0. Разработчикам не нужно было беспокоиться об идеальном воспроизведении уровней напряжения для аналоговой системы бесконечной точности или о сравнении более высоких и меньших напряжений (что еще больше меняются в зависимости от колебаний напряжения питания), которые компьютеры всегда плохо запоминали или сравнивали. То, что вы считаете числом, компьютер воспринимает как структуру проводов, на которых оказывается напряжение 0 В или 5 В (сейчас у нас гораздо больше загадочных напряжений с высокоэффективными процессорами, но это было традиционным в течение долгого времени). Значения проводов затем подаются на набор логических элементов И и ИЛИ, которые сначала изолируют конкретный шаблон, отправленный по этим проводам, а затем предоставляют сохраненное значение, связанное с этим шаблоном (если это недостаточно ясно, компьютерный дизайн утомительно). Без достаточного количества проводов компьютер просто не сможет обработать (опять же, заметьте, я не сказал «понимать») число. Это может стать немного сложнее, потому что в памяти может быть не то же количество битов данных, хранящихся на адрес, сколько битов адреса для поиска этих данных, или потому что не все части компьютера на самом деле состоят из логических вентилей, как вы бы сделали. понять их, но это ответ на другой вопрос.
Читайте также: