Задать вопрос

Правильно ли объясняется в тексте почему в 1 кб 1024 байт?

Для предотвращения искажения информации было принято определённые биты делать своего рода "контрольными точками". В случае повреждения участка информации, её чтение сбрасывалось и продолжалось со следующего участка, от следующей контрольной точки. Исторически сложилось, что на первых перфокартах было 40 ячеек (битов) в строке, что равно пяти байтам. 41-ый бит использовался в даном случае, как контрольная точка.

Ну и наконец, о килобайтах. Приставка кило, как мы в самом начале выянили, означает "тысяча". Чтобы закодировать 1000 байтов должно потребоваться 8000 битов, но так как на каждом пятом байте добавляется один бит - контрольная точка, то для кодирования 1000 байтов нужно немного больше – 8200 битов. Разделив это, на стандартный объем байта – получаем, что на каждую тысячу байтов добавляется 25 "лишних" байтов.

И вот на этом этапе роль в истории науки сыграло важное совпадение. Дело в том, что в бинарной (двоичной) системе принято считать все объемы данных, связывая их с двойкой. Два в десятой степени – будет 1024. Это всего на один байт отличается от полученной нами выше величины. Таким образом для удобства машинных рассчетов было принято считать, что в одном килобайте не 1025 байтов, а 1024.
harryhammer.blogspot.ru/2011/05/1024.html

как вы можете объяснить почему в 1 кб 1024 б??
  • Вопрос задан
  • 9502 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 8
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Нет, неправильно.
То, что было в перфокартах для контроля четности - это оставьте перфокартам, контроль четности и кодирование данных никак не связаны с обозначением кило и 1024. И уж тем более 1025 вообще далеко от ИТ.

Все проще.
Берем 1 бит, можем оперировать двумя значениями 0 и 1
2 бита - 4 значения, 0-3
3 бита - 8, 0-7
4 бита - 16, 0-15
5 бит - 32, 0-31
6 бит - 64, 0-63
7 бит - 128, 0-127
8 бит - 256, 0-255
9 бит - 512, 0-511
10 бит - 1024, 0-1023

Нет такого набора бит, чтобы мы могли оперировать ровно 1000 значений. 9 бит мало, а 10 бит позволяют оперировать уже 1024 значениями. Ограничиваьт себя искусственно нет смысла.
Поэтому на железном уровне в качестве адресации используются степени двойки, чтобы максимально эффективно использовать все используемые биты и память.
Следовательно ближайшее к 1000 "компьютерное" число это 1024, отсюда в килобайте 1024 байт.

Для бизнеса это оказалось не очень удобно. И вообще много технических моментов обычным пользователям непонятно почему и как, например с теми же жесткими дисками, когда объем неотформатированного диска и отформатированного может отличаться на заметные процентов 10-15.
Кроме того, в системе Си, приставки кило, мега, и так далее всегда означали 1000 чего-то. Поэтому с исторически сложившимся 1024 в ИТ отрасли сложилась некомфортная ситуация. Для исправления и появились новые названия, кибибайты, мегибайты, а килобайты и мегабайты по общепринятой системе Си теперь кратны 1000. Но это важно для стандартизации, маркетинга, а не для программирования.

В программировании ничего не изменилось, и как бы их не называли кибибайт или килобайт, при программировании оперируют степенями двойки, а не десятки.
Ответ написан
Комментировать
@Tabletko
никого не трогаю, починяю примус
Почитайте в чём разница между килобайтом и кибибайтом.
Ответ написан
Комментировать
Fragster
@Fragster
помогло? отметь решением!
Мне больше всего понравилась компания Kigston в статье про флешку на 2 ТБ https://geektimes.ru/company/kingston_technology/b...
Гигабайт, как недавно выяснилось, понятие относительное, но по общемировому стандарту фактическая ёмкость составляет 1 979 958 951 936 байт
Ответ написан
Комментировать
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
ОМГ, ну и бред.

В 1 Кб 1024б по тому, что по какому-то недоразумению у нас закрепилось использование десятичных приставок СИ, вместо двоичных (причем даже в ГОСТе).

https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D...
Ответ написан
lxsmkv
@lxsmkv
Test automation engineer
знаки классической печатной машинки (американской) ~ различных 94 знаков (укладываются в 7 бит) и один паритетный бит. Вот и 8.
если представить себе матрицу памяти со строками и столбцами, что удобней адрессировать две квадратные решетки по 8x8 = 128
или решетку 5х25 = 125 ?
Ответ написан
Комментировать
Jump
@Jump
Системный администратор со стажем.
Для предотвращения искажения информации было принято определённые биты делать своего рода "контрольными точками"
Не слышал о таком, может речь о контрольных суммах, а не о контрольных точках?

Ну и наконец, о килобайтах.
Тут все просто.
Приставка кило как вы верно заметили означает тысячу. Поэтому один килобит это ровно 1000бит и никак иначе.
Так же как килобайт это 1000байт, а килограмм это тысяча грамм, а киловольт это тысяча вольт.
Но так уж исторически сложилось, что некоторые называют килобитом десятую степень двойки, это неправильно, но используется повсеместно.
Для десятой степени двойки есть свое, правильное название - кибибит.
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Дело вот в чём. Возьмём магнитную память. У неё есть проволочки-ряды, проволочки-столбцы и проходящий через все сердечники провод считывания-записи. Чтобы считать ячейку, мы пускаем ток через нужный ряд и нужный столбец (сила тока подбирается так, чтобы две проволочки работали, а одна — нет). Чтобы пустить ток ровно через одну проволочку, используется такой девайс, как дешифратор: двоичный код, например, 010=2 превращает в позиционный код 00100000 (единица на 2-м месте, начиная с ноля).

Вот у нас есть такой блок памяти. Пришёл адрес — как получить номер строки и столбца? Разделить адрес на кол-во столбцов; частное — № строки, остаток — № столбца. Для удобства столбцов должна быть степень двойки: во-первых, это полностью задействует возможности дешифратора; во-вторых, частное и остаток сводятся к тому, что часть линий адреса отводим на один дешифратор, часть на второй.

Если у нас несколько таких блоков, из тех же соображений и строк должна быть степень двойки — так что получается, что ёмкость устройства памяти произвольного доступа (магнитной, оперативной, постоянной, флэш-) степень двойки. Количество блоков — не обязательно, и батарея чипов на SSD может содержать любое удобное количество — а ёмкость одного чипа действительно степень двойки.

С появлением полупроводниковой памяти тяга к степеням двойки даже усилилась: стоимость чипа зависит от его ёмкости постольку, поскольку часть чипов идёт в выбраковку. Есть некий (и довольно узкий) оптимальный диапазон ёмкостей: больше — велика выбраковка; меньше — только для спец. приложений вроде совместимости и энергопотребления.

Вот и всё.
Ответ написан
Комментировать
@RuslanRa
Не могу понять причем тут килоБАЙТЫ и кратность битов.

1 байт это 8 бит
1 килобайт это 8000 бит.

Файл размером 1 килобайт будет занимать в памяти 1 килобайт = массив из 1000 байт. Причем тут степень двойки если мы говорим о байтах?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы