Я провел небольшое исследование. Байт равен 8 битам, а слово - это наименьшая единица, которая может быть адресована в памяти. Точная длина слова варьируется. Я не понимаю, в чем смысл байта? Почему бы не сказать 8 бит?
Я задал этот вопрос профессору, и он сказал, что в наши дни большинство машин имеют побайтовую адресацию, но что это значит?
assembly
memory
hardware
terminology
cpu-architecture
Питер Кордес
источник
источник
Ответы:
Байт : сегодня байт почти всегда равен 8 битам. Однако так было не всегда, и не существует «стандарта» или чего-то, что бы это диктовало. Поскольку 8 бит - это удобное число для работы, оно стало стандартом де-факто.
Слово : естественный размер, с которым процессор обрабатывает данные (размер регистра). Чаще всего встречаются слова размером 8, 16, 32 и 64 бита, но возможны и другие размеры. Например, было несколько 36-битных машин или даже 12-битных машин .
Байт является наименьшей адресуемой единицей для процессора. Если вы хотите установить / очистить отдельные биты, вам сначала нужно получить соответствующий байт из памяти, поиграть с битами, а затем записать байт обратно в память.
Слово напротив является большим куском бит , с которой процессор может выполнять обработку (как сложение и вычитание) в то время. Это определение немного нечеткое, поскольку некоторые процессоры могут иметь разные размеры слов для разных задач (например, целочисленная обработка или обработка с плавающей запятой). Размер слова - это то, с чем работает большинство операций.
Есть также несколько процессоров, которые имеют другой размер указателя : например, 8086 - это 16-битный процессор, что означает, что его регистры имеют ширину 16 бит. Но его указатели (адреса) имеют ширину 20 бит и были вычислены путем объединения двух 16-битных регистров определенным образом.
источник
word
равно 16 битам, даже на современных процессорах x86, где размер операнда по умолчанию составляет 32 бита (dword), а ширина целочисленного регистра - 64 бита (qword). И регистры xmm имеют ширину 128 бит (movdqa
перемещайте двойные квадраты). Шина памяти имеет ширину не менее 64 бита (и передает пакетами по 64 байта = строка кэша), а от исполнительной единицы к путям кеширования не менее 128 бит или 256 или даже 512 бит. Каким бы ни был собственный размер машинного слова современной x86, он не 16 бит, но современная x86 по-прежнему использует терминологию 8086.Помимо технической точки зрения, что байт не обязательно 8 бит, причина наличия термина проста в человеческой природе:
экономия сил (она же лень) - проще сказать «байт», чем «восемь бит»
трайбализм - группы людей любят использовать жаргон / частный язык, чтобы отличать их от других.
Просто плыть по течению. Вы не собираетесь менять накопленную за 50 с лишним лет терминологию ИТ и культурный багаж, жаловавшись на это.
FWIW - правильный термин, когда вы имеете в виду «8 бит, не зависящих от архитектуры оборудования», это «октет».
источник
БАЙТ
Я пытаюсь ответить на этот вопрос с точки зрения C ++.
Стандарт C ++ определяет «байт» как «Адресуемая единица данных, достаточно большая, чтобы вместить любой член базового набора символов среды выполнения».
Это означает, что байт состоит, по крайней мере, из достаточного количества смежных битов для размещения основного набора символов для реализации. То есть количество возможных значений должно быть равно или превышать количество различных символов. В США базовыми наборами символов обычно являются наборы ASCII и EBCDIC, каждый из которых может содержать 8 бит. Следовательно, гарантируется, что байт будет иметь не менее 8 бит.
Другими словами, байт - это объем памяти, необходимый для хранения одного символа.
Если вы хотите проверить «количество битов» в вашей реализации C ++, проверьте файл «limits.h». В нем должна быть запись, как показано ниже.
СЛОВО
Слово определяется как определенное количество битов, которые могут быть обработаны вместе (т.е. за одну попытку) машиной / системой. В качестве альтернативы мы можем сказать, что Word определяет количество данных, которые могут быть переданы между ЦП и ОЗУ за одну операцию.
Аппаратные регистры в компьютерной машине имеют размер слова. Размер Word также определяет максимально возможный адрес памяти (каждый адрес памяти указывает на размер памяти в байтах).
Примечание. В программах на C ++ адреса памяти указывают на байт памяти, а не на слово.
источник
Потому что не все машины имеют 8-битные байты. Поскольку вы отметили это
C
, поищитеCHAR_BIT
вlimits.h
.источник
Слово - это размер регистров в процессоре. Это означает, что инструкции процессора, такие как, add, mul и т. Д., Находятся на входах размером с слово.
Но большинство современных архитектур имеют память, адресуемую 8-битными блоками, поэтому удобно использовать слово «байт».
источник
В этом контексте слово - это единица, которую машина использует при работе с памятью. Например, на 32-битной машине длина слова составляет 32 бита, а на 64-битной - 64 бита. Размер слова определяет адресное пространство.
В программировании (C / C ++) слово обычно представлено
int_ptr
типом, который имеет ту же длину, что и указатель, таким образом абстрагируя эти детали.Однако некоторые API-интерфейсы могут вас смутить, например Win32 API, потому что он имеет такие типы, как
WORD
(16 бит) иDWORD
(32 бит). Причина в том, что API изначально был нацелен на 16-битные машины, затем был перенесен на 32-битные машины, а затем на 64-битные машины. Для хранения указателя вы можете использоватьINT_PTR
. Подробнее здесь и здесь .источник
Кажется, все ответы предполагают языки высокого уровня и в основном C / C ++.
Но вопрос помечен как «сборка», и во всех известных мне ассемблерах (для 8-битных, 16-битных, 32-битных и 64-битных процессоров) определения гораздо более ясны:
источник
int<X>_t
иuint<X>_t
тип (плюс более) , которые должны быть использованы , если вы хотите переменный / параметр определенного размера бита..word
может быть 32 бита (например, для Sparc ).Несмотря на то, что длина слова варьируется, на всех современных машинах и даже на всех старых архитектурах, с которыми я знаком, размер слова по-прежнему кратен размеру байта. Таким образом, нет особого недостатка в использовании «байта» вместо «8 бит» по отношению к размеру переменного слова.
Кроме того, вот несколько причин использовать байт (или октет 1 ) вместо «8 бит»:
1 Хотя я считаю, что для этого ответа байт равен 8 битам, это не всегда верно: на старых машинах байт может иметь другой размер (например, 6 бит . Октет всегда означает 8 бит, независимо от машины ( поэтому этот термин часто используется при определении сетевых протоколов.) В современном использовании байт в подавляющем большинстве используется как синоним 8 битов.
источник
Какая бы терминология ни использовалась в таблицах данных и компиляторах, «Байт» - это восемь бит. Давайте не будем путать исследователей и обобщения с более неясными исключениями, особенно потому, что слово «Байт» происходит от выражения «К восьми». Я проработал в индустрии полупроводников / электроники более тридцати лет и ни разу не знал, что «байт» используется для выражения чего-либо, превышающего восемь бит.
источник
Базовая единица компьютерной памяти - бит. Бит может содержать одно из двух значений: 0 и 1. Все остальное хранилище на компьютере основано на наборах битов. Поразительно, сколько битов может представить компьютер: числа, буквы, изображения, фильмы, звуки, документы и программы, и это лишь некоторые из них. Байт составляет 8 бит, и на большинстве компьютеров это наименьший удобный фрагмент памяти. Например, у большинства компьютеров нет инструкции по перемещению бита, но есть инструкция по перемещению байта. Менее распространенным термином является слово, обозначающее родную единицу данных данной компьютерной архитектуры. Слово состоит из одного или нескольких байтов. Например, компьютер с 64-битными регистрами и 64-битной адресацией памяти обычно имеет 64-битные (8-байтовые) слова. Компьютер выполняет множество операций со своим размером слова, а не по байтам за раз. Компьютерное хранилище, наряду с пропускной способностью большинства компьютеров, она обычно измеряется и обрабатывается в байтах и наборах байтов. Килобайт, или КБ, составляет 1024 байта на мегабайт, или МБ, это 1024 2 байта на гигабайт, или ГБ, это 1024 3 байта на терабайт, или ТБ, это 1024 4 байта на петабайт, или ПБ, это 1024 5 байтов Компьютер производители часто округляют эти числа и говорят, что мегабайт - это 1 миллион байтов, а гигабайт - это 1 миллиард байтов. Сетевые измерения являются исключением из этого общего правила; они даны в битах (поскольку сети перемещают данные понемногу) 024 5 байтов Производители компьютеров часто округляют эти числа и говорят, что мегабайт - это 1 миллион байтов, а гигабайт - это 1 миллиард байтов. Сетевые измерения являются исключением из этого общего правила; они даны в битах (потому что сети перемещают данные понемногу) 024 5 байтов Производители компьютеров часто округляют эти числа и говорят, что мегабайт - это 1 миллион байтов, а гигабайт - это 1 миллиард байтов. Сетевые измерения являются исключением из этого общего правила; они даны в битах (поскольку сети перемещают данные понемногу)
источник
Если машина имеет побайтовую адресацию, а слово является наименьшей единицей, которую можно адресовать в памяти, тогда, я думаю, слово будет байтом!
источник
word
определенно означает 32 бита, но естьlb
инструкция (загрузить байт), которая загружает 8 бит.Группа из 8 бит называется байтом. (за исключением случаев, когда это не так :) для определенных архитектур)
слово является фиксированным размером группы бит, которые обрабатываются как единое целое с помощью набора команд и / или аппаратных средств процессора. Это означает, что размер регистра общего назначения (который обычно больше байта) представляет собой слово
В языке C слово чаще всего называют целым числом =>
int
источник
octet
был определен для явного обозначения последовательности из 8 бит из-за неоднозначности, связанной с термином байт . Но звук мне больше нравитсяbyte
:)byte
лучше»: я сильно подозреваю, что вы не одиноки в этом и безопасны для нескольких нишевых систем, «путаница» байта, возможно, имеет размер, отличный от 8-битного в наши дни уже не актуален.Термины БАЙТ и СЛОВО относятся к размеру процессора, о котором идет речь. Наиболее распространенными процессорами являются 8-битные, 16-битные, 32-битные или 64-битные. Это длины СЛОВ процессора. Фактически половина СЛОВА - это БАЙТ, независимо от числовой длины. Готовы к этому, половина БАЙТА - это НИББЛ.
источник
Фактически, в обычном использовании слово стало синонимом 16 бит, так же как байт имеет 8 бит. Это может немного сбить с толку, поскольку «размер слова» на 32-битном ЦП составляет 32 бита, но когда мы говорим о слове данных, это будет означать 16 бит. Микроконтроллеры с 32-битным размером слова стали называть свои инструкции «длинными» (предположительно, чтобы избежать путаницы между словом и двойным словом).
источник
ldrh
загружать 16 бит и расширять их нулями в 32-битный регистр. Илиldrsh
загрузить и продлить по знаку 16 бит.