LINUX.ORG.RU
ФорумTalks

Сколько бит в байте?!!!


1

0

недавно на лоре было обсуждение байтов/битов и для меня выяснилось что в байте не обязательно 8 бит. В универе преподы услышав такой вопрос приходили в легкий шок, говорили что такого не может быть и посылали меня с моими битами и байтима куда подальше.В общем от них ничего не добилась. Не мог бы кто-нибудь поподробнее разъяснить насколько это актуально сейчас и где вообще байт не равен 8 битам


Согласно Кнуту, байт стал исключительно восьмибитным только с 1975 года. Раньше вполне мог быть и шестибитным.

anonymous
()

A contiguous sequence of binary bits in a serial data stream, such as in modem or satellite communications, or from a disk-drive head, which is the smallest meaningful unit of data. These bytes might include start bits, stop bits, or parity bits, and thus could vary from 7 to 12 bits to contain a single 7-bit ASCII code.

http://en.wikipedia.org/wiki/Byte

Relan ★★★★★
()

магия ника вопрошаюшего....

anonymous
()
Ответ на: комментарий от KRoN73

> Но по ГОСТ и по СИ, в байте строго 8 бит.

Не знаю насчет ГОСТа, но насчет Си вы что-то путаете. ISO/IEK 9899-99, "3. Terms, definitions, and symbols", "3.6 byte", "Note 2" (стр.4):

A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit.

Relan ★★★★★
()
Ответ на: комментарий от KRoN73

А что на счет современных цифровых сигнальных процессоров, в которых используется байт длиной 16 бит и больше?

spi4ka
() автор топика
Ответ на: комментарий от spi4ka

НЕТ! Не путайте размер ширину регистра процессора/шины адреса или данных с размером бита! С тем же успехом можно сказать, что в i386 байт - 32 бита

krum
()
Ответ на: комментарий от krum

> С тем же успехом можно сказать, что в i386 байт - 32 бита

нет. Для практики и для Си -- байт это минимально адресуемый элемент. В i386 это 8 бит. В некоторых других процессорах -- больше;

dilmah ★★★★★
()
Ответ на: комментарий от krum

>Не путайте размер ширину регистра процессора/шины адреса или данных с размером бита!

Не путайте архитектуру x86 c нормальными. Не путайте ширину регистра и размер адресуемого слова.

Хотя бы на PDP посмотрите, там хотя тоже путаница ещё присутствует (потому что позволяет обращаться к байтам в составе 16-ти разрядного слова).

KRoN73 ★★★★★
()
Ответ на: комментарий от spi4ka

Да запарили уже одну и ту же ошибку цитировать. В подобных вопросах Wiki не может гарантировать правильность.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Дык, я ж про Си. Стандарт Си более лоялен, есть даже константа для количества бит в байте. Оно и понятно, если учесть откуда Си родом. :)

Relan ★★★★★
()
Ответ на: комментарий от KRoN73

> Некоторые просто до сих пор байтом называют слово шины процессора. Она, в общем случае, безусловно может не быть равна 8 битам. Но по ГОСТ и по СИ, в байте строго 8 бит.

По приведённой ссылке на ГОСТ, вообще-то, информация про размер байта приводится как _справочное_ приложение, которому, насколько я понимаю, вовсе не обязательно следовать...

Вопрос этот на самом деле ИМХО может иметь значение только для того, кто собирается кого-то обмануть и потом в случае чего отмазаться (типа "а у меня в байте 4 бита, и то что памяти там в 2 раза меньше чем заказчик думал меня не волнует - надо было уточнять какие у меня байты"). Потому как уже исторически сложилось, что практически все под байтом понимают 8 бит, и если ты хочешь, чтобы тебя правильно поняли, называть байтом что-то другое малоосмыслено.

slav ★★
()
Ответ на: комментарий от dilmah

>нет. Для практики и для Си -- байт это минимально адресуемый элемент. В i386 это 8 бит. В некоторых других процессорах -- больше;

в каких например? интересно бы узнать поконкретнее

prizident ★★★★★
()
Ответ на: комментарий от slav

кроме ссылки на систему СИ все ваши доводы остались голословными. может кто приведет конкретный пример. и вообще я не особо поняла, все считают что в байте 8 бит???

spi4ka
() автор топика
Ответ на: комментарий от prizident

> в каких например? интересно бы узнать поконкретнее

Не знаю про другое количество бит, но у нас вроде была разработка процессора на троичной системе счисления (это вроде как эффективней потому что ближе к числу е).

slav ★★
()
Ответ на: комментарий от KRoN73

KRoN73:

>>Не знаю насчет ГОСТа

>Я выше ссылку привёл.

Какие-то мутные определения, кстати... Уж бит имеет совершенно четкое определение, которого в этом ГОСТе нету, а текст СИ я не видел...

Насчет 8-битного байта -- оно, конечно, по ГОСТу (и СИ) это и так, но по жизни -- увы, нет. Байт исторически -- минимальная адресуемая последовательность двоичных разрядов. То, что с подачи ИБМ восьмибитный байт фактически вытеснил все остальные -- историческая случайность, ее могло и не быть. Выше приведена ссылка на Википедию, там вся история описана.

А вообще, как раз всякие СИ с ГОСТами в данном вопросе -- не авторитет. Например, физики обычно работают в некотором варианте CGS, где электрическая емкость измеряется в сантиметрах. А теоретики вообще работают в системе единиц, где и скорость света, и постоянная Планка, и гравитационная постоянная равны 1. И что теперь, все они не правы?

Из твоей ссылки следует, что ГОСТы (и СИ) определяют байт как 8 бит. И все! Никто не заставляет тебя пользоваться СИ! Конечно, если некто является фанатичным приверженцем СИ (есть такие, кстати), то он будет настаивать на этом. Такие и атмосферное давление меряют не в мм. рт. столба, а в паскалях.

Die-Hard ★★★★★
()
Ответ на: комментарий от spi4ka

> Так а в настоящее время используют байты в которых не 8 бит???

Немного странный вопрос: что такое "используют", и при чем тут "настоящее время"?

Я только что привел ссылку, в которой слово "байт" означало последовательность бит, длинна которой отлична от 8. Следовательно, я "использовал" "байты в которых не 8 бит", причем сделал это "в настоящее время", не так ли? :-)

Кстати, не-8-биные байты даже в lkml упоминаются, см. сюда: http://lkml.org/lkml/2006/10/9/47

Вообще, терминологические споры довольно глупы. Надеюсь, все все поняли.

Die-Hard ★★★★★
()

Мне недавно один человек говорил: чтобы пересчитать байты информации переданные по FTP-протоколу в биты, надо умножать на 10, потому что все проходит через ethernet-сеть. В этот момент я был за рулем и ничего не сказал.

Vlad_Ts ★★★★★
()

Скажем так, значение переменной bitcount в byte, в данный момент, равно восьми. А то что было ДО и будет ПОСЛЕ, какая нафиг разница ?

robot12 ★★★★★
()

>В универе преподы услышав такой вопрос приходили в легкий шок

Ты им ещё скажи, что в мегабайте теперь 1000 байт :)

Международный стандарт IEC 1998 года рекомендует использовать специальные префиксы, например, киби (1024) вместо кило (1000), для бинарных степеней, используемых при обработке и передаче данных.

robot12 ★★★★★
()

эта тема пинается на лоре в среднем раз в девять месяцев. На позапрошлом избиении кто-то привел ссылку на очень интересную книжку на эту тему, ЕМНИП, там были описаны и шести и четырех битные байты и т.д.

юзайте поиск

adminchik
()
Ответ на: комментарий от spi4ka

> А что на счет современных цифровых сигнальных процессоров, в которых используется байт длиной 16 бит и больше?

все-таки не надо путать "байт" и "машинное слово". это разные термины.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от Vlad_Ts

> Мне недавно один человек говорил: чтобы пересчитать байты информации переданные по FTP-протоколу в биты, надо умножать на 10, потому что все проходит через ethernet-сеть. В этот момент я был за рулем и ничего не сказал.

и он был абсолютно прав, потому, что в ethernet используется кодирование 8B/10B

ivlad ★★★★★
()
Ответ на: комментарий от klalafuda

> все-таки не надо путать "байт" и "машинное слово". это разные термины

Ключевая фраза. А байт и в правду на некоторых архитектурах был отличен от 8-ми бит. Но последние лет пятнадцать такие машины уже почти не встречаются.

EvAn
()
Ответ на: комментарий от Die-Hard

> 2Relan

> Один из вас говорит про систему единиц СИ, другой -- про стандарт языка Си

Тьфу блин. Прошу прощения, мне даже в голову не пришло что СИ -- это еще и система единиц. :)

Relan ★★★★★
()
Ответ на: комментарий от Relan

> Тьфу блин. Прошу прощения, мне даже в голову не пришло что СИ -- это еще и система единиц. :)

...а Паскаль ещё и чьё-то фамилиё...

// wbr

klalafuda ★☆☆
()

8 бит и ещё +1 если год високосный )))

frame ★★★
()
Ответ на: комментарий от Lumi

Тс-с. Подманиваем... А то сорвется;)

svu ★★★★★
()
Ответ на: комментарий от spi4ka

> Так а в настоящее время используют байты в которых не 8 бит???

В настоящее время используются процессоры, в которых наименьшая адресуемая сущность > 8 бит.

tailgunner ★★★★★
()

В военное время значение косинуса может достигать четырех, как и битов в байте.

record ★★★★★
()
Ответ на: комментарий от tailgunner

> В настоящее время используются процессоры, в которых наименьшая адресуемая сущность > 8 бит.

на x86 инструкции BT* (BT/BTC/BTR/BTS/...) позволяют работать с индивидуальными битами данных независимо от размера слова, байта и пр.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от tailgunner

>В настоящее время используются процессоры, в которых наименьшая адресуемая сущность > 8 бит.

Какие, если не секрет?

krum
()
Ответ на: комментарий от krum

>>В настоящее время используются процессоры, в которых наименьшая адресуемая сущность > 8 бит.

>Какие, если не секрет?

DSP разные. Есть такая российская хрень Л1879ВМ1.

tailgunner ★★★★★
()
Ответ на: комментарий от klalafuda

> на x86 инструкции BT* (BT/BTC/BTR/BTS/...) позволяют работать с индивидуальными битами данных

"Я знал, что ты это скажешь!" (c) Судья Дредд :D Но вы же понимаете, что это не катит за отмазку.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> DSP разные. Есть такая российская хрень Л1879ВМ1.

AFAIU в нем самое вкусное - это не столько управляющее RISC ядро, сколько аппаратный матричный умножитель. а он как раз может оперировать данными произвольной разрядности:

http://www.module.ru/ruproducts/proc/nm6403.shtml

--- cut ---
Важнейшая особенность векторного сопроцессора - работа с операндами произвольной длины (даже не кратной степени двойки) в диапазоне 1-64 бит. Этим достигается оптимальное соотношение между скоростью и точностью вычислений: при однобитовых операндах на тактовой частоте 40 МГц производительность составит 11 520 MMAC (миллионов операций умножения с накоплением) или 40 000 MOPS (миллионов логических операций в секунду), при 32-битовых операндах и 64-бит результате она станет номинальной - 40 MMAC. Умение динамично, в процессе вычислений изменять разрядность операндов позволяет повысить производительность в тех случаях, когда обычные процессоры работают "вхолостую", с избыточной точностью.

VECTOR-сопроцессор
* переменная 1-64-разрядная длина векторных операндов и результатов;
* формат данных - целые числа, упакованные в 64-разрядные блоки, в форме слов переменной длины от 1 до 64 разрядов каждое;
* поддержка векторно-матричных и матрично-матричных операций;
* два типа функций насыщения на кристалле;
* три внутренних 32x64-разрядных RAM-блока.
--- cut ---

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от tailgunner

> "Я знал, что ты это скажешь!" (c) Судья Дредд :D Но вы же понимаете, что это не катит за отмазку.

почему собственно не катит?

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

> AFAIU в нем самое вкусное

Нет в нем вообще ничего вкусного :(

> почему собственно не катит?

Потому что добавлено как afterthought, и кроме этих команд, больше никакие адресами битов не оперируют.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Потому что добавлено как afterthought

AFAIR битовые операции были уже в i386? в i486 точно были.

> и кроме этих команд, больше никакие адресами битов не оперируют.

ну и что? на x86 есть отдельный класс команд, которые оперируют отдельными битами. они вполне работоспособны и востребованы. это я к тому, что утверждение "минимальная единица адресации - это байт" верно не всегда.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

>> Потому что добавлено как afterthought

> AFAIR битовые операции были уже в i386?

AFAIR, не было.

>> и кроме этих команд, больше никакие адресами битов не оперируют.

> ну и что? на x86 есть отдельный класс команд, которые оперируют отдельными битами

Вот именно - _отдельный_ класс. MMU умеет защищать отдельные биты? :D

> они вполне работоспособны и востребованы

Насчет "работоспособны" - верю. А где они востребованы?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Насчет "работоспособны" - верю. А где они востребованы?

foo@grey-vm: cd /usr/src/kernels/2.6.9-5.EL-smp-i686/include/asm-i386/
foo@grey-vm: grep -r -e "bt[csr]" *
bitops.h:               "btsl %1,%0"
bitops.h:               "btsl %1,%0"
bitops.h:               "btrl %1,%0"
bitops.h:               "btrl %1,%0"
bitops.h:               "btcl %1,%0"
bitops.h:               "btcl %1,%0"
bitops.h:               "btsl %2,%1\n\tsbbl %0,%0"
bitops.h:               "btsl %2,%1\n\tsbbl %0,%0"
bitops.h:               "btrl %2,%1\n\tsbbl %0,%0"
bitops.h:               "btrl %2,%1\n\tsbbl %0,%0"
bitops.h:               "btcl %2,%1\n\tsbbl %0,%0"
bitops.h:               "btcl %2,%1\n\tsbbl %0,%0"
posix_types.h:          __asm__ __volatile__("btsl %1,%0": \
posix_types.h:          __asm__ __volatile__("btrl %1,%0": \
rwsem.h: * When a writer subtracts WRITE_BIAS, it'll get 0xffff0001 for the case of an
signal.h:       __asm__("btsl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
signal.h:       __asm__("btrl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");

// wbr

klalafuda ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.