Байт

(по мотивам дискуссии с Максимом Сергеичем от 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 Нет, я не призываю называть мегабайты мегаоктетами, особенно учитывая тот факт, что мегабайтами повсеместно называются мебибайты.


О записи