Байт
(по мотивам дискуссии с Максимом Сергеичем от 28.12.2006)
Что такое байт?
Самый распространенный ответ: “восемь битов”. Однако это не совсем верно. Байт численно равен восьми битам в большинстве случаев, но эти понятия не эквивалентны.
В то же время, любой специалист по сетям твердо знает, что восемь битов - это октет
. В чем же разница?
Байт определяется через размер наименьшей адресуемой ячейки памяти. Этимология слова byte
восходит к глаголу bite
, и по сути означает наименьший кусок, который способен “откусить” компьютер. В то время, когда разрабатывались первые сетевые протоколы, в эксплуатации были машины с различной длиной байта, довольно часто попадались “семибитки”. Именно поэтому и был создан термин октет
, однозначно определяющий цепочку из восьми битов.
Эта путаница в терминологии прослеживается даже среди профессионалов. Так, в языке C существует тип данных byte
, и это совершенно нормально - этот язык зависит от платформы, и вполне вероятно, что на семибитной машине длина byte
была бы равна семи битам. Но то же самое обозначение мы видим и в Java, и в .NET - хотя на этих платформах длина типа данных byte
всегда равна восьми битам. Логичнее было бы назвать его “octet” или “Int8″. Можно предположить, что инженеры Java хотели воссоздать привычное программистам на C окружение, но тогда непонятно, почему инженеры .NET не назвали Int16 - word, Int32 - dword, а Int64 - qword (бездумно списали с Java?). Кроме того, ключевые слова языка можно выбирать любые, слово byte
вполне могло обозначать System.Int8 так же, как int
обозначает System.Int16.
С word
тоже не все просто. Термин обозначает не “два байта”, а размер типичного блока данных, которыми процессор общается с памятью и внешними устройствами. Таким образом, размер слова в процессорах x86 - 16 бит, а в 8088 - вообще 8 бит (спасибо, Сергей Иваныч). В принципе, ничего не мешает длине слова быть меньше длины байта, хотя такое решение представляется сомнительным с практической точки зрения.
За утерю же оригинального смысла термина word мы должны благодарить Intel, которая ради обратной совместимости ввела термины dword
и qword
- в контексте 32- и 64-битных процессоров соответственно.
Да, это вроде бы мелочь, но формулировка на то и формулировка, чтобы быть четкой. Ни байт, ни слово - не единицы измерения информации, и потому не должны использоваться в этом контексте. Можно доказывать, что 90% технарей используют слово байт как синоним восьми бит - но настоящий профессионал всегда знает, о чем он говорит. Кто-нибудь встречал словосочетание новые восьмибайтовые процессоры
?
PS Нет, я не призываю называть мегабайты мегаоктетами, особенно учитывая тот факт, что мегабайтами повсеместно называются мебибайты
.
О записи
Вы читаете “Байт,” в блоге Полоса отчуждения
- Опубликовано:
- 12.28.06 / 7пп
- Рубрика:
- вне категорий, философия
Комментарии (1067)
Оставить комментарий | comments rss [?] | трекбек [?]