В этом руководстве по программированию сборки я прочитал, что 8 бит используются для данных, а 1 бит - для контроля четности, который затем используется для обнаружения ошибки контроля четности (вызванной неисправностью оборудования или электрическими помехами).
Это правда?
Ответы:
Байт данных составляет восемь битов, может быть больше битов на байт данных, которые используются в ОС или даже на аппаратном уровне для проверки ошибок (бит четности или даже более продвинутая схема обнаружения ошибок), но данные - восемь биты и любой бит четности обычно невидимы для программного обеспечения. Байт был стандартизирован для обозначения «восьми бит данных». Текст не ошибается, говоря, что может быть больше битов, предназначенных для хранения байта данных, чем восемь битов данных, но они обычно не считаются частью байта как такового, сам текст указывает на этот факт.
Вы можете увидеть это в следующем разделе учебника:
4 * 8 = 32, на самом деле это может занять 36 бит в системе, но для ваших целей и задач это только 32 бит.
источник
char
в C (о чем идет ссылка) это как раз самая маленькая адресуемая единица памяти. Он просто называется char , но стандарт C делает его синонимом байта .Традиционно, байт может быть любого размера и представляет собой наименьшую адресуемую единицу памяти. В наши дни 8-битные байты были в значительной степени стандартизированы для программного обеспечения. Как сказал JustAnotherSoul, аппаратное обеспечение может хранить больше битов, чем 8 бит данных.
Если вы работаете с программируемыми логическими устройствами, такими как ПЛИС, вы можете увидеть, что их внутренняя память часто адресуется как 9-битные блоки, а как автор HDL вы можете использовать этот 9-й бит для проверки ошибок или просто для хранения больших объемов данных на «байт». При покупке микросхем памяти для нестандартного оборудования у вас обычно есть выбор 8 или 9-битных адресуемых блоков (или 16/18, 32/36 и т. Д.), И затем вам решать, есть ли у вас 9-битные «байты» и что вы делаете с этим 9-м битом, если хотите.
источник
Этот текст очень плохо сформулирован. Он почти наверняка говорит о ECC (код с исправлением ошибок) RAM.
ECC ram обычно хранит 8-битную информацию, используя 9-битную. Дополнительный бит на байт используется для хранения кодов исправления ошибок.
(В обоих случаях каждый байт распределяется по каждому чипу. Изображение предоставлено Puget Systems )
Это все совершенно невидимо для пользователей аппаратного обеспечения. В обоих случаях программное обеспечение, использующее эту оперативную память, видит 8 бит на байт.
Кроме того: коды с исправлением ошибок в ОЗУ обычно не имеют значения 1 бит на байт; вместо этого они 8 бит на 8 байтов. Это имеет те же накладные расходы, но имеет некоторые дополнительные преимущества. Смотрите SECDED для получения дополнительной информации.
источник
Вообще говоря, краткий ответ состоит в том, что байт равен 8 битам. Это упрощает вопрос (иногда даже до степени неточности), но это определение, с которым большинство людей (включая большое количество программистов) знакомо, и определение, которое почти все используют по умолчанию (независимо от того, сколько байтов разного размера они ' пришлось работать)
Более конкретно, байт является наименьшим адресуемым блоком памяти для данной архитектуры и, как правило, достаточно большой, чтобы содержать один текстовый символ. На большинстве современных архитектур байт определяется как 8 бит; ИСО / МЭК 80000-13 также указывает, что байт равен 8 битам, как и общепринятый консенсус (это означает, что если вы говорите, скажем, о 9-битных байтах, вы столкнетесь с большим количеством проблем, если не будете явно утверждают, что вы не имеете в виду нормальные байты).
Однако есть исключения из этого правила. Например:
sizeof(char)
, в то же время косвенно заявляя, что achar
должно быть не менее 8 бит, каждый байт должен иметь уникальный адрес, и между непрерывными байтами не должно быть пробелов. в памяти. Это должно сделать языки более переносимыми, чем они были бы, если бы им явно требовались 8-битные байты. [Количество битов в байте указано какCHAR_BIT
, в «пределах» заголовка библиотеки C (limits.h
в C,climits
в C ++).]Таким образом, в большинстве случаев байт обычно составляет 8 бит. Если нет, то это, вероятно, 9 бит, и может быть, а может и не быть частью 36-битного слова.
источник
Обратите внимание, что термин байт не определен без контекста. Что касается компьютерных архитектур, можно предположить, что байт является 8-разрядным, по крайней мере, для современных архитектур. Это было в значительной степени стандартизировано такими языками программирования, как C, которые требовали, чтобы байты имели по крайней мере 8 бит, но не давали никаких гарантий для больших байтов, делая 8 бит на байт единственным безопасным допущением.
Существуют компьютеры с адресуемыми единицами размером более 8 бит (обычно 16 или 32), но эти единицы обычно называются машинными словами, а не байтами. Например, DSP с 32 КБ 32-разрядными словами ОЗУ будет объявляться как имеющий 128 КБ или ОЗУ, а не 32 КБ.
Вещи не так хорошо определены, когда речь заходит о стандартах связи. ASCII по-прежнему широко используется и имеет 7-битные байты (которые хорошо вписываются в 8-битные байты на компьютерах). Приемопередатчики UART по-прежнему производятся с настраиваемым размером байта (обычно вы можете выбрать по крайней мере от 6, 7 до 8 бит на байт, но 5 и 9 не являются неслыханными).
источник
Байт обычно определяется как наименьшая индивидуально адресуемая единица пространства памяти. Это может быть любой размер. Существуют архитектуры с размером байтов от 6 до 9 бит, может быть, даже больше. Существуют также архитектуры, в которых единственная адресуемая единица измерения - это размер шины. На таких архитектурах мы можем либо сказать, что у них просто нет байта , либо размер байта совпадает со словом (в одном конкретном случае, который я знаю, это быть 32-битным); в любом случае, это определенно не 8 бит. Аналогично, существуют архитектуры с битовой адресацией, на этих архитектурах мы могли бы снова утверждать, что байты просто не существуют, или мы могли бы утверждать, что байты 1 бит; В любом случае это разумное определение, но 8 бит определенно неверно.
На многих основных архитектурах общего назначения один байт содержит 8 бит. Однако это не гарантируется. Чем дальше вы отклоняетесь от основного и / или от процессоров общего назначения, тем больше вероятность того, что вы встретите не 8-битные байты. Это заходит так далеко, что некоторые высокопортативные программы даже позволяют настраивать размер. Например, более старые версии GCC содержали макрос, называемый
BITS_PER_BYTE
(или что-то подобное), который настраивал размер байта для конкретной архитектуры. Я полагаю, что некоторые старые версии NetBSD могут работать на не-8-битных архитектурах.Если вы действительно хотите подчеркнуть, что речь идет о точном объеме 8 бит, а не о наименьшем адресуемом объеме памяти, каким бы большим он ни был, вы можете использовать термин октет , который, например, используется во многих более новых RfC.
источник
CHAR_BIT
(найден вlimits.h
), я не в курсеBITS_PER_BYTE
Когда я начал программировать в 1960 году, у нас было 48-битные слова с 6-битными байтами - тогда они не называли это имя, их называли символами. Затем я работал на компьютере Golem с 75-битными словами и 15-битными байтами. Позже, 6-битные байты были нормой, пока IBM не выпустила 360, и в настоящее время байт обычно эквивалентен октету, то есть 8 битам данных. У некоторого оборудования были дополнительные биты для обнаружения ошибок и, возможно, для исправления ошибок, но они не были доступны для программного обеспечения.
источник
Байт 8 бит.
В далеком прошлом существовали разные определения слова памяти и байта. Предположение, что эта двусмысленность широко распространена или распространена в современной жизни, является ложным.
По крайней мере, с конца 1970-х годов размер байта составлял 8 бит. Массовое население домашних компьютеров и ПК однозначно использовало байт в качестве 8-битного значения в своей документации, равно как и все листы данных и документацию для гибких дисков, жестких дисков и PROM / EPROM / EEPROM / Flash EPROM. / SRAM / SDRAM микросхемы памяти, которые я прочитал за этот период времени. (И я лично прочитал многие из них прямо за это время.) Ethernet и несколько других протоколов связи выделяются для меня как необычные в разговорах об октетах.
Неоднозначность термина байт сама по себе редкая и неясная вещь. Очень, очень немногие из числа программистов, инженеров-проектировщиков, инженеров-испытателей, продавцов, сервисных инженеров или средних специалистов за последние 30 лет или больше думают, что это означает нечто иное, чем 8-битное значение, если они вообще узнают это слово. ,
Когда байт обрабатывается аппаратным обеспечением, например, когда он хранится в микросхемах памяти или передается по проводам, аппаратное обеспечение может добавлять избыточные данные в байт. Позже это может помочь в обнаружении аппаратных ошибок, так что ненадежные данные могут быть распознаны и отброшены (например, четность, контрольная сумма, CRC). Или это может позволить исправить ошибки в данных и восстановить данные (например, ECC). В любом случае избыточные данные будут отброшены, когда байт будет извлечен или получен для дальнейшей обработки. Байт остается центральным 8-битным значением, а избыточные данные остаются избыточными данными.
источник
Во-первых, учебник, на который вы ссылаетесь, кажется довольно устаревшим, и, по-видимому, он направлен на устаревшие версии процессоров x86, не говоря об этом, поэтому многие вещи, которые вы читаете там, не будут поняты другими (например, если вы заявляете что WORD составляет 2 байта, люди либо не будут знать, о чем вы говорите, либо узнают, что вас учили на основе очень устаревших процессоров x86, и будут знать, чего ожидать).
Байт - это любое количество бит, которое кто-то решит принять. Это может быть 8-битный, или 9-битный, или 16-битный, что угодно. В 2016 году в большинстве случаев байт будет восьмибитным. Чтобы быть в безопасности, вы можете использовать термин октет - октет всегда, всегда, восемь битов.
Настоящая путаница здесь ставит в тупик два вопроса: 1. Какое количество битов в байте? 2. Если бы я хотел перенести один байт из одного места в другое, или если бы я хотел сохранить байт, используя практические физические средства, как бы я это сделал? Второй вопрос, как правило, вас мало интересует, если вы не работаете в компании, производящей модемы, жесткие диски или твердотельные накопители. На практике вас интересует первый вопрос, а на второй вы просто говорите: «Ну, кто-то за этим следит».
Упомянутый бит четности является примитивным механизмом, который помогает обнаружить, что когда байт сохраняется в памяти, а затем считывается, байт изменился из-за какой-то аварии. Это не очень хорошо, потому что он не обнаружит, что два бита были изменены, поэтому изменение, скорее всего, останется незамеченным и не сможет исправить проблему, потому что нет способа узнать, какой из 8 бит изменился или даже если бит четности изменился.
Биты четности практически не используются в этой примитивной форме. Данные, которые хранятся постоянно, обычно защищаются более сложными способами, например, путем добавления 32-битной или более длинной контрольной суммы к блоку из 1024 байтов, что занимает гораздо меньше дополнительного пространства (0,4% в этом примере вместо 12,5%) и значительно реже не узнать, когда что-то не так.
источник
WORD
, что ... вроде как подтверждает вашу точку зрения, поскольку многие имена типов WinAPI устарели, но сохранены для обратной совместимости. xPНесмотря на действительно превосходные ответы, данные здесь, я удивлен, что никто не указал, что биты четности или биты исправления ошибок по определению являются «метаданными» и поэтому не являются частью самого байта.
Байт имеет 8 бит !
источник
В современном использовании, байт составляет 8 битов, период (хотя у него исторически были другие определения). С другой стороны, слово данных - это то, что рассматриваемое аппаратное обеспечение рассматривает как атомарную единицу, - это может быть 8 бит, 9 бит, 10 бит, 12 бит, 16 бит, 20 бит, 24 бита, 32 бита и т. Д. Различные компьютеры системы на протяжении многих лет имели всевозможные размеры слов.
Чтобы реализовать систему памяти или протокол передачи, выгодно добавить обнаружение / исправление ошибок, которое включает дополнительные биты. Они не предназначены для 9-битного байта, потому что, как указано выше, байт равен 8 битам.
Различные схемы добавляют обнаружение и / или исправление ошибок различными способами.
Типичное использование четности заключается в добавлении дополнительного бита к слову передачи, чтобы получатель мог обнаружить один бит ошибки.
Схема, которая может обеспечить исправление ошибок в одном бите, включает добавление 4 битов ECC на 32-разрядное слово данных. Просто случается, что это арифметически эквивалентно 1 биту на байт, но это не может / не работает таким образом. Одно 36-битное слово данных может нести достаточно информации для восстановления после однобитовой ошибки для 32-битного пространства данных.
источник
8 бит Внутри процессора и клавиатуры это 9 и 11 бит. Пользовательские данные представлены в 8 битах. Клавиши на клавиатуре отправляют поющие, которые разделены на 11 бит. 1 начальный бит, 1 конечный бит, 1 бит четности и 8 бит, представляющих нажатую клавишу.
источник