Какая разница между словом и байтом? - PullRequest
79 голосов
/ 13 октября 2011

Я провел небольшое исследование. Байт составляет 8 бит, а слово - это наименьшая единица измерения, которую можно адресовать в памяти. Точная длина слова варьируется. То, что я не понимаю, в чем смысл иметь байт? Почему бы не сказать 8 бит?

Я задал профу этот вопрос, и он сказал, что большинство машин в наши дни являются адресуемыми байтами, но что бы это могло значить?

Ответы [ 13 ]

143 голосов
/ 13 октября 2011

Байт : Сегодня байт почти всегда 8-битный.Однако, это не всегда имело место , и нет никакого "стандарта" или чего-то такого, что диктует это.Поскольку 8 бит - это удобное число для работы, оно стало стандартом де-факто.

Word : натуральный размер, с которым процессор обрабатывает данные (регистрразмер).Наиболее распространенные размеры слов, встречающиеся сегодня, составляют 8, 16, 32 и 64 бита, но возможны и другие размеры.Например, было несколько 36-битных машин или даже 12-битных машин .

байт - это наименьшая адресуемая единица дляЦПУ.Если вы хотите установить / очистить отдельные биты, вам сначала нужно извлечь соответствующий байт из памяти, связать его с битами, а затем записать байт обратно в память.

В отличие от word это большая часть битов, с которой процессор может одновременно выполнять обработку (например, сложение и вычитание).Это определение немного нечетко, так как некоторые процессоры могут иметь разные размеры слов для разных задач (например, целочисленная или с плавающей запятой).Размер слова - это то, с чем работает большинство операций.

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

15 голосов
/ 13 октября 2011

Чего я не понимаю, так это какой смысл иметь байт? Почему бы не сказать 8 бит?

Помимо технической точки зрения, что байт не обязательно должен быть 8 битами, причинами наличия термина является простая человеческая природа:

  • экономия усилий (она же лень) - проще сказать "байт", а не "восемь битов"

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

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


FWIW - правильный термин, который следует использовать, когда вы подразумеваете, что «8 битов, не зависящих от аппаратной архитектуры», это «октет».

7 голосов
/ 29 мая 2012

BYTE

Я пытаюсь ответить на этот вопрос с точки зрения C ++.

Стандарт C ++ определяет «байт» как «Адресуемая единица данных, достаточно большая для хранениялюбой член базового набора символов среды выполнения ».

Это означает, что байт состоит как минимум из достаточного количества смежных битов для размещения базового набора символов для реализации.То есть количество возможных значений должно быть равно или превышать количество различных символов.В Соединенных Штатах основными наборами символов обычно являются наборы ASCII и EBCDIC, каждый из которых может содержать до 8 бит.Следовательно, гарантируется, что байт будет иметь не менее 8 битов.

Другими словами, байт - это объем памяти, необходимый для хранения одного символа.

Если вы хотите проверить 'количество битов »в вашей реализации C ++, проверьте файл« limit.h ».У него должна быть запись, подобная приведенной ниже.

#define CHAR_BIT      8         /* number of bits in a char */

WORD

Слово определяется как определенное количество битов, которые могут быть обработаны вместе (т.е. в одной попытке)на машине / системе.В качестве альтернативы мы можем сказать, что Word определяет объем данных, который может быть передан между ЦП и ОЗУ за одну операцию.

Аппаратные регистры на компьютере имеют размер слова.Размер Word также определяет максимально возможный адрес памяти (каждый адрес памяти указывает на размер памяти в байтах).

Примечание. В программах на C ++ адреса памяти указывают на байт памяти, а не на слово.

6 голосов
/ 13 октября 2011

Почему бы не сказать 8 бит?

Потому что не все машины имеют 8-битные байты.Поскольку вы отметили это C, найдите CHAR_BIT в limits.h.

5 голосов
/ 13 октября 2011

В этом контексте слово - это единица измерения, которую машина использует при работе с памятью. Например, на 32-битной машине длина слова составляет 32 бита, а на 64-битной - 64 бита. Размер слова определяет адресное пространство.

В программировании (C / C ++) слово обычно представлено типом int_ptr, длина которого равна указателю, таким образом абстрагируя эти детали.

Однако некоторые API могут вас запутать, например, Win32 API, потому что он имеет такие типы, как WORD (16 бит) и DWORD (32 бит) Причина в том, что API изначально предназначался для 16-битных машин, затем был перенесен на 32-битные машины, затем на 64-битные машины. Для хранения указателя вы можете использовать INT_PTR. Подробнее здесь и здесь .

5 голосов
/ 13 октября 2011

Слово - это размер регистров в процессоре.Это означает, что инструкции процессора, такие как, add, mul и т. Д. Находятся на входах размера слова.

Но большинство современных архитектур имеют память, адресуемую в 8-битных блоках, поэтому удобно использовать слово «байт».

4 голосов
/ 03 февраля 2013

Кажется, что все ответы предполагают языки высокого уровня и в основном C / C ++.

Но вопрос помечен как «сборка», и во всех известных мне ассемблерах (для 8-битных, 16-битных, 32-битных и 64-битных процессоров) определения гораздо более ясны:

byte  = 8 bits 
word  = 2 bytes
dword = 4 bytes = 2Words (dword means "double word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple word")
2 голосов
/ 11 февраля 2018

Точная длина слова варьируется. То, что я не понимаю, в чем смысл иметь байт? Почему бы не сказать 8 бит?

Несмотря на то, что длина слова варьируется, на всех современных машинах и даже на всех более старых архитектурах, с которыми я знаком, размер слова все еще кратен размеру байта. Таким образом, нет особого недостатка в использовании «байта» над «8 битами» по отношению к переменному размеру слова.

Кроме того, вот несколько причин использовать байт (или октет 1 ) над "8 битами":

  1. Большие единицы просто удобны, чтобы избежать очень больших или очень маленьких чисел: вы также можете спросить «зачем говорить 3 наносекунды, когда вы можете сказать 0,000000003 секунды» или «зачем говорить 1 килограмм, когда вы можете сказать 1000 граммов» и т. Д.
  2. Помимо удобства, единица байта так же фундаментальна, как 1 бит , поскольку многие операции обычно работают не на уровне байтов, а на уровне байтов: адресация памяти , выделение динамического хранилища, чтение из файла или сокета и т. д.
  3. Даже если бы вы приняли «8-битный» как тип блока, так что вы могли бы сказать «два 8-битных» вместо «двух байтов», часто было бы очень запутанно начинать ваш новый блок с число. Например, если кто-то сказал «сто 8 бит», это можно было бы легко интерпретировать как 108 бит, а не 100 бит.

1 Хотя для этого ответа я буду считать 8-битный байт, это не всегда так: на старых машинах байт может иметь другой размер (например, как 6 битов . Октет всегда означает 8 битов, независимо от машины (поэтому этот термин часто используется при определении сетевых протоколов). В современном использовании байт в подавляющем большинстве случаев используется как синоним 8 бит.

2 голосов
/ 03 февраля 2013

Независимо от терминологии, представленной в таблицах данных и компиляторах, «байт» составляет восемь битов.Давайте не будем пытаться перепутать исследователей и обобщения с более неясными исключениями, особенно потому, что слово «байт» происходит от выражения «по восемь».Я работал в полупроводниковой / электронной промышленности более тридцати лет и ни разу не знал, что «Байт» используется для выражения чего-либо больше, чем восемь бит.

0 голосов
/ 09 февраля 2018

Термины BYTE и WORD относятся к размеру процессора, на который идет ссылка.Наиболее распространенными процессорами являются / были 8-битные, 16-битные, 32-битные или 64-битные.Это длина СЛОВА процессора.На самом деле половина СЛОВА - это БАЙТ, какой бы ни была числовая длина.Готова к этому, половина БАЙТА - НИБАЯ.

...