1 МБ = 1024 КБ = 2 ^ 10. Тем не менее, почему бы не использовать для расчета размера всего 1000 байт вместо 1024?

1024 = 2 в степени 10. Компьютеры используют двоичную систему, в которой основание равно 2 (0 и 1). Люди используют десятичную систему с основанием 10. Поэтому, если у меня есть 1 байт, который содержит 8 бит в современных компьютерах, я могу представить до 256 различных состояний, возможностей, значений и т.д. 10 бит могут представлять 1024 состояния. Ну..и что? Какое отношение он имеет к памяти? Я думаю, что размер памяти зависит от количества бит/байтов, а не от количества состояний, которые могут представлять биты и байты. Я смущен. Какая техническая выгода от мысли, что 1K(i)B = 1024, а не 1000 байт?

Я думаю, мне нужно больше технических объяснений, возможно, что-то, связанное с тем, как работает процессор или как данные на самом деле хранятся на жестком диске. Не просто: эй, компьютер использует двоичную форму, поэтому мы используем 2 ^ 10, а не 10 ^ 2.


person Timur Fayzrakhmanov    schedule 12.06.2015    source источник
comment
Вы удосужились погуглить этот вопрос: почему kb 1024 байта? Их много отвечаю...   -  person David Zemens    schedule 12.06.2015
comment
Ага, я уже все прочитал   -  person Timur Fayzrakhmanov    schedule 12.06.2015
comment
stackoverflow.com/questions/19819763 /   -  person David Zemens    schedule 12.06.2015
comment
Спасибо, но это не то, что я ищу.   -  person Timur Fayzrakhmanov    schedule 12.06.2015
comment
Когда ученым-компьютерщикам понадобились префиксы для описания большого количества байтов, они решили позаимствовать префиксы, используемые в метрической системе... поскольку 1024 = 2 ^ 10 очень близко к 1000 = 10 ^ 3, эти ученые решили назвать 1024 байта килобайт и описать его как около 1000 байт. ссылка   -  person David Zemens    schedule 12.06.2015
comment
@HighPerformanceMark, да, ты прав - это моя ошибка.   -  person Timur Fayzrakhmanov    schedule 12.06.2015


Ответы (3)


Какое отношение он имеет к памяти?

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

На очень высоком уровне типичный чип памяти работает следующим образом: у него есть выводы трех типов — выводы адреса, выводы данных и выводы управления. Когда процессору необходимо прочитать или записать память, он устанавливает комбинацию нулей и единиц на адресных контактах микросхемы памяти, посылает сигнал чтения или записи на управляющие контакты, немного ждет, а затем считывает или записывает данные, используя контакты данных.

Комбинация нулей и единиц, размещенных на выводах адреса, называется адресом памяти. Это двоичное число в диапазоне от нуля до 2n, где n — количество выводов адреса.

Вот как силы двойки входят в измерение емкости памяти. Удобно, что 1024 было очень близко к 1000, поэтому «K» было заимствовано для обозначения 1024, когда речь шла об объеме памяти.

Обратите внимание, что измерение размеров данных с использованием двоичных множителей не является универсальным. Например, емкости жестких дисков часто указываются в десятичных, а не в двоичных числах, потому что жесткие диски по своей природе не используют двоичную адресацию (и количество десятичных гигабайтов больше, что помогает продавать продукт).

person Sergey Kalinichenko    schedule 12.06.2015

Какое отношение он имеет к памяти?

Очевидно, что все эти размеры являются степенью двойки. Причина, по которой это 1024 и 1024^2, заключается в том, что это точное описание того, что вы получаете.

Адресовать память легко, когда вы используете строительные блоки компьютера. Эти стандартные блоки представляют собой булавки адреса, и их большее количество соответствует степени числа 2.

Тем не менее мы также можем назвать его просто "1000". Просто в большинстве случаев он менее точен и, следовательно, имеет меньший смысл в общем случае. Однако есть исключения: большинство жестких дисков фактически используют степень 10 для емкости. Вы замечаете это, когда вставляете его в свой компьютер, и число «24» внезапно начинает иметь значение. :-)

person atlaste    schedule 12.06.2015

Исторически сложилось, что управление памятью осуществляется в степени двойки, потому что степень двойки может быть выполнена с использованием битовых сдвигов. Если в системе 1024 страницы, аппаратное обеспечение может идентифицировать страницу, просто извлекая (или сдвигая) биты.

В дисковых накопителях 1K — это 1000 байт. Это было сделано в маркетинговых целях. Производители дисковых накопителей могут рекламировать чуть большую емкость. Это верно даже несмотря на то, что приводы работают с блоками, размеры которых являются степенью двойки.

person user3344003    schedule 12.06.2015
comment
Хм.. это хорошо. Первоначально мой вопрос возник, когда я обнаружил, что могу легко определить количество байтов, например, файла размером 32 МБ, используя сдвиг битов (32 ‹‹ 20). Не могли бы вы объяснить. Если бы в системе было 1024 страницы, аппаратное обеспечение могло бы идентифицировать страницу, просто извлекая (или сдвигая) биты. более детально? Все, что я знаю о странице, это наименьшая единица данных виртуальной памяти ОС, используемая для управления памятью. - person Timur Fayzrakhmanov; 12.06.2015
comment
Страница — это основная единица управления памятью. Разностные системы используют разные размеры страниц. Старый VAX использовал 512 байт. Сейчас 4K — самый распространенный размер страницы. Предполагая, что в вашем примере есть страница размером 1 КБ (10 бит), это означает, что младшие 10 бит адреса определяют смещение на странице, а остальные биты (22 или 54) определяют страницу. Аппаратное обеспечение использует эти биты для преобразования логических адресов в физические адреса. - person user3344003; 13.06.2015
comment
Мой английский не совсем хорош.. Я не могу понять вашу идею. Вы говорите: как в вашем примере страница размером 1 КБ (10 бит [может быть, 1000 бит?]), что означает младшие 10 бит адреса [что это означает «самые младшие биты адреса»?]. Как вы работаете 22 и 54? Извините, но вас очень сложно понять( - person Timur Fayzrakhmanov; 13.06.2015
comment
Если у вас есть страницы размером 1 КБ, для представления байта на странице требуется 10 бит. Если у вас 32-битный адрес, оставьте 22-битный для указания страницы. Если у вас 64-битный адрес, остается 54 бита для указания страницы. Адрес, затем комбинация выбора страницы и байта в выборе страницы. - person user3344003; 14.06.2015