Подтвердить что ты не робот

Почему 8 и 256 таких важных чисел в компьютерных науках?

Я не очень хорошо разбираюсь в архитектуре RAM и HDD, или как электроника занимается кусками памяти, но это всегда вызывало мое любопытство: Почему мы решили остановиться на 8 бит для наименьшего элемента в компьютерном значении?

Мой вопрос может выглядеть очень глупым, потому что ответ очевиден, но я не очень уверен...

Это потому, что 2 ^ 3 позволяет идеально вписываться в адресную память? Являются ли электроника специально разработанной для хранения куска 8 бит? Если да, почему бы не использовать более широкие слова? Это потому, что он делит 32, 64 и 128, так что словам процессора могут быть даны несколько из этих слов? Удобно ли иметь 256 значений для такого крошечного пространства?

Как вы думаете?

Мой вопрос слишком метафизичен, но я хочу убедиться, что это просто историческая причина, а не технологическая или математическая причина.

Для анекдота я также думал о стандарте ASCII, в котором большинство первых символов бесполезны с такими вещами, как UTF-8, я также пытаюсь подумать о более ранней и более быстрой кодировке символов...

4b9b3361

Ответ 1

Исторически байты не всегда были 8-битными (на самом деле, компьютеры также не должны быть бинарными, но не-двоичные вычисления на практике значительно меньше). Именно по этой причине стандарты IETF и ISO часто используют термин октет - они не используют байт, потому что они не хотят предполагать, что это означает 8 бит, когда это не так.

В самом деле, когда байт был придуман, он был определен как единица 1-6 бит. Байт-размеры, используемые во время истории, включают 7, 9, 36 и машины с байтами с переменным размером.

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

В стандарте ASCII вы указываете 7-битный байт и основывался на более ранних 6-битных стандартах связи.


Изменить: может быть, стоит добавить к этому, поскольку некоторые настаивают на том, что те, которые говорят байты, всегда октеты, путают байты со словами.

Октет - это имя, присвоенное блоку из 8 бит (от латыни для восьми). Если вы используете компьютер (или на более высоком уровне абстракции, язык программирования), где байты являются 8-битными, тогда это легко сделать, иначе вам понадобится код преобразования (или ковариация на аппаратном уровне). Концепция октета больше связана с сетевыми стандартами, чем с локальными вычислениями, поскольку, будучи нейтральной по архитектуре, она позволяет создавать стандарты, которые могут использоваться для связи между машинами с разными размерами байтов, следовательно, его использование в стандартах IETF и ISO ( Кстати, ISO/IEC 10646 использует октет, где стандарт Unicode использует байт для того, что по существу - с некоторыми незначительными дополнительными ограничениями для последней части - тот же стандарт, хотя стандарт Unicode делает детали, что они означают октет за байтом, хотя байты могут быть разные размеры на разных машинах). Концепция октета существует именно потому, что 8-битные байты являются общими (следовательно, выбор использования их в качестве основы таких стандартов), но не универсальны (отсюда необходимость в другом слове, чтобы избежать двусмысленности).

Исторически байт был размером, который использовался для хранения персонажа, что в свою очередь основывается на практиках, стандартах и ​​стандартах де-факто, которые использовались для компьютеров, используемых для телекса и других методов связи, начиная, возможно, с Бодо в 1870 году (Я не знаю ранее, но я открыт для исправлений).

Это отражается в том, что в C и С++ единица для хранения байта называется char, размер которой в битах определяется CHAR_BIT в стандартном листе limit.h. Различные машины использовали бы 5,6,7,8,9 или более бит для определения символа. В эти дни, конечно же, мы определяем символы как 21-битные и используем разные кодировки для их хранения в 8-, 16- или 32-битных единицах (и не разрешенных Unicode способами, таких как UTF-7 для других размеров), но исторически это было как это было.

В языках, которые стремятся быть более согласованными между машинами, а не отражать архитектуру машины, byte имеет тенденцию фиксироваться на языке, и в наши дни это обычно означает, что он определен в языке как 8-разрядный. Учитывая точку в истории, когда они были сделаны, и что большинство машин теперь имеют 8-битные байты, различие в значительной степени спорное, хотя это не невозможно реализовать компилятор, во время выполнения и т.д. для таких языков, на машинах с разными размерами байт, просто не так просто.

Слово является "естественным" размером для данного компьютера. Это менее четко определено, потому что оно затрагивает несколько совпадающих проблем, которые, как правило, согласуются, но не могут. Большинство регистров на машине будут такого размера, но некоторые могут этого не делать. Наибольший размер адреса обычно представляет собой слово, хотя это может быть не так (Z80 имеет 8-битный байт и 1-байтовое слово, но допускает некоторое удвоение регистров, чтобы дать некоторую 16-разрядную поддержку, включая 16-разрядную адресации).

Снова мы видим здесь разницу между C и С++, где int определяется в терминах размера слова и long, который определяется для использования процессора с концепцией "длинного слова", если таковой существует, хотя возможно, будучи идентичным в данном случае до int. Минимальные и максимальные значения снова находятся в пределе .h. (Действительно, по мере того, как время прошло, int может быть определено как меньший, чем натуральный размер слова, как комбинация согласованности с тем, что распространено в другом месте, сокращение использования памяти для массива int и, возможно, другие проблемы я не знаю).

Языки Java и .NET используют подход, определяющий int и long как фиксированный для всех архитекторов, а также для устранения различий для среды выполнения (особенно JITter). Примечательно, что даже в .NET размер указателя (в небезопасном коде) будет меняться в зависимости от архитектуры как основного размера слова, а не от размера слова, наложенного словами.

Следовательно, октет, байт и слово все очень независимы друг от друга, несмотря на то, что отношение байта-октета == и целое число байтов (и целое двоично-круглое число, такое как 2, 4, 8 и т.д.), которые сегодня являются обычными.

Ответ 2

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

Как уже упоминалось, в этой статье http://en.wikipedia.org/wiki/Byte более подробно описывается байт и его история с переменным размером.

Общая причина, по которой важны 8, 256 и другие числа, заключается в том, что они имеют степень 2, а компьютеры работают с использованием базовой (2-й) системы переключателей.

Ответ 3

Кодирование ASCII требует 7 бит, а для EBCDIC требуется 8 бит. Расширенные коды ASCII (такие как наборы символов ANSI) использовали 8-й бит для расширения набора символов с графикой, акцентированными символами и другими символами. В некоторых архитектурах использовались собственные кодировки; хорошим примером этого является DEC PDP-10, в котором было 36-битное машинное слово. Некоторые операционные системы в этой архитектуре использовали упакованные кодировки, в которых хранилось 6 символов машинного слова для различных целей, таких как имена файлов.

К 1970-м годам успех Д.Г. Nova и DEC PDP-11, которые были 16-битными архитектурами и мэйнфреймами IBM с 32-битными машинными словами, по-умолчанию подталкивали отрасль к 8-битовому символу. В этой среде были разработаны 8-разрядные микропроцессоры конца 1970-х годов, и это стало стандартом де-факто, в частности, поскольку периферийные корабли вне периферийных устройств, такие как UART, чипы ROM и чипы FDC, были построены как 8-разрядные устройства.

К последней половине 1970-х годов индустрия установила 8 разрядов как стандарт де-факто, и такие архитектуры, как PDP-8 с 12-разрядным машинным словом, стали несколько маргинализированными (хотя ISA PDP-8 и производные все еще появляются в встроенные продукты sytem). 16 и 32-битные микропроцессоры, такие как семейства Intel 80x86 и MC68K.

Ответ 4

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

8-битные числа способны представлять 256 (2 ^ 8) различных значений, достаточных для всех символов английского языка и довольно много дополнительных. Это сделало цифры 8 и 256 весьма важными.
Тот факт, что многие процессоры (используемые и продолжающие) обрабатывают данные в 8 бит, очень помогли.

Другими важными полномочиями двух, о которых вы, возможно, слышали, являются 1024 (2 ^ 10 = 1k) и 65536 (2 ^ 16 = 65k).

Ответ 5

Компьютеры основаны на цифровой электронике, а цифровая электроника работает со штатами. Один фрагмент может иметь 2 состояния, 1 или 0 (если напряжение выше некоторого уровня, то оно равно 1, если нет, то оно равно нулю). Представить, что поведение двоичной системы было введено (хорошо не представлено, но широко принято).

Итак, мы подошли к бит. Бит - это наименьший фрагмент в двоичной системе. Он может принимать только 2 состояния, 1 или 0, и представляет собой атомный фрагмент всей системы.

Чтобы упростить нашу жизнь, был введен байт (8 бит). Чтобы дать некоторую аналогию, мы не выражаем вес в граммах, но это базовая мера веса, но мы используем килограммы, потому что это проще в использовании и для понимания использования. Один килограмм составляет 1000 грамм, и это может быть выражено как 10 по мощности 3. Поэтому, когда мы возвращаемся к двоичной системе, и мы используем ту же мощность, получаем 8 (2 от мощности 3 равно 8). Это было сделано, потому что использование только бит было слишком сложным в ежедневных вычислениях.

Это продолжалось, так что в будущем, когда мы поняли, что 8 байтов снова слишком малы и становятся сложными в использовании, мы добавили +1 к мощности (2 по мощности 4 равно 16), а затем снова 2 ^ 5 равно 32, и так далее, а 256 составляет всего 2 от мощности 8.

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

(2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 и т.д.) ( 2 ^ x, x = 1,2,3,4,5,6,7,8,9,10 и т.д.)

Ответ 6

Важное число здесь - двоичный 0 или 1. Все ваши другие вопросы связаны с этим.

Клод Шеннон и Джордж Бул сделал фундаментальная работа над тем, что мы теперь называем теорией информации и булевой арифметикой. Короче говоря, это является основой того, как цифровой коммутатор с возможностью представления 0 OFF и 1 ON может представлять более сложную информацию, такую ​​как цифры, логику и фотографию jpg. Двоичные базы являются основой компьютеров, как мы их знаем в настоящее время, но вполне возможны другие компьютеры с числовой базой или аналоговые компьютеры.

В человеческой десятичной арифметике значения десяти имеют значение. 10, 100, 1000, 10000 кажутся важными и полезными. Когда у вас есть компьютер, основанный на двоичном коде, есть полномочия 2, также, что становится важным. 2 ^ 8 = 256 достаточно для символов алфавита, пунктуации и управления. (Что еще более важно, 2 ^ 7 достаточно для символов алфавита, пунктуации и управления, а 2 ^ 8 - достаточно места для этих символов ASCII и бит проверки.)

Ответ 7

Я считаю, что основная причина связана с оригинальным дизайном IBM PC. Процессор Intel 8080 был первым предшественником 8086, который позже будет используется в IBM PC. Он имел 8-битные регистры. Таким образом, вокруг 8-битной метафоры была разработана целая экосистема приложений. Чтобы сохранить обратную совместимость, Intel разработала все последующие архитектуры для сохранения 8-битных регистров. Таким образом, 8086 и все процессоры x86 после этого сохранили свои 8-битные регистры для обратной совместимости, хотя за последние годы они добавили новые 16-битные и 32-разрядные регистры.

Другая причина, по которой я могу думать, - 8 бит, идеально подходит для установки базового набора латинских символов. Вы не можете поместить его в 4 бита, но вы можете в 8. Таким образом, вы получаете целую 256-значную кодировку ASCII. Это также наименьшая мощность 2, для которой у вас достаточно бит, в который вы можете поместиться набор символов. Конечно, в наши дни большинство наборов символов на самом деле являются 16-разрядными (т.е. Unicode).

Ответ 8

Обычно мы рассчитываем в базе 10, одна цифра может иметь одно из десяти различных значений. Компьютерные технологии основаны на переключателях (микроскопических), которые могут быть включены или выключены. Если один из них представляет цифру, эта цифра может быть либо 1, либо 0. Это база 2.

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

  • 1 цифра, 2 значения
  • 2 цифры, 4 значения
  • 3 цифры, 8 значений и т.д.

Когда процессоры разработаны, они должны выбрать размер, с которым процессор будет оптимизирован для работы. Для CPU это считается "словом". Раньше процессоры основывались на размерах слов в четыре бита и вскоре после 8 бит (1 байт). Сегодня процессоры в основном предназначены для работы с 32-битными и 64-битными словами. Но на самом деле два переключателя состояния - вот почему все компьютерные числа имеют степень 2.

Ответ 9

Чарльз Петцольд написал интересную книгу под названием Code, которая охватывает именно этот вопрос. См. Главу 15 "Байты и шестерка".

Цитаты из этой главы:

Восемь битовых значений являются входами в сумматоры, защелки и селектора данных, а также выходы из этих блоков. 8-битные значения также определяются переключатели и отображаются лампочками, Путь данных в этих схемах таким образом, имеет ширину 8 бит. Но почему 8 бит? Почему не 6 или 7 или 9 или 10?

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

... Некоторое время байт означал просто количество бит в определенном путь к данным. Но к середине 1960-х годов. в связи с развитием IBM System/360 (их большой комплекс бизнес-компьютеров), слово появилось для обозначения группы из 8 бит.

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

Ответ 10

Исторические причины, я полагаю. 8 - мощность 2, 2 ^ 2 равна 4, а 2 ^ 4 = 16 для большинства целей слишком мало, а 16 (следующая мощность двух) бит-аппаратных средств появилось намного позже.

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

Другая, аналогично прагматичная причина против "сокращения": если бы мы, скажем, использовали 4 бита в качестве одного слова, мы бы в основном получали только половину troughtput по сравнению с 8 бит. Помимо переполнения намного быстрее.

Вы всегда можете сжать, например. 2 числа в диапазоне 0..15 в одном октете... вам просто нужно извлечь их вручную. Но если у вас нет, как и gazillions наборов данных для хранения в памяти бок о бок, это не стоит усилий.