Я нахожу несколько источников, утверждающих, что степень двоичных разрядов в двоичном слове (например, 8 бит на байт) является «хорошей вещью» или «удобной». Я не нахожу источника, указывающего почему.
Из какой истории почему байты восемь бит? мы читаем в утвержденном ответе:
Бинарные компьютеры побуждают дизайнеров делать размеры двух степеней.
Хорошо, но почему? В том же вопросе, но в поле комментария для вопроса, я нахожу:
Последнее предложение в шутку? 12-битный байт был бы неудобен, потому что это не степень 2. - robjb
Опять же, не имеет смысла ...
вычисление адреса - чертовски много проще с степенями 2, и это имеет значение, когда вы делаете логику из необработанных транзисторов в маленьких банках - Майк
Поскольку байты являются наименьшей адресуемой единицей, это не имеет особого смысла. Много комментариев по поводу комментария. Может быть, я что-то пропустил.
Из Википедии :
Стандарт де-факто, состоящий из восьми битов, представляет собой удобную степень двух, допускающую значения от 0 до 255 для одного байта.
И это было бы удобно, потому что ...?
Для пояснения речь идет о количестве бит на байт (например, 8 или 6 и т. Д.), А не о количестве значений на байт (например, 28 или 26 и т. Д.). Из-за путаницы я также отмечаю, что речь идет не о размерах Word.
Меня не слишком интересуют исторические причины. Это было хорошо объяснено в другом месте (см. Ссылки).
Связанный вопрос по SO: /programming/1606827/why-is-number-of-bits-always-a-power-of-two
Ответы:
Я не думаю, что 8-битные байты были успешными, потому что их ширина равна степени двух. Если вы не хотите обращаться с битами индивидуально - и это является общей чертой ни сейчас, ни в прошлом - обладание степенью двойки не имеет реального практического значения (просто - сейчас гораздо больше, чем в прошлом, когда щадят некоторые дискретные компоненты были важны - рефлекс для инженеров аппаратного и программного обеспечения, и пребывание в знакомой среде важно для других целей), и я не помню, чтобы я упоминал упомянутое в моей истории вычислений (1). Нужны были строчные буквы, что означало нечто большее, чем тогдашние доминирующие 6-битные наборы символов. ASCII был 7-битным, но ASCII тогда был, хотя и чисто для обмена (и, следовательно, для преобразования во внутренний код для обработки), и, таким образом,
и для аппаратного выигрыша 8-битного байта, поскольку он позволял упаковать 2 десятичных цифры в один байт в то время, когда 75% данных были числовыми и представлены в BCD (3).
(1) например, Бло и Брукс, Компьютерная архитектура ; MacKenzie, Наборы кодированных символов, История и Развитие обсуждают эту тему.
(3) Документ X3.2 - Подкомитет, ответственный за ASCII - цитируется Маккензи.
(3) Маккензи, снова.
источник
Кроме исторической случайности, нет особой причины, по которой мы должны использовать 8/16/32/64 бит. Я полагаю, что 12/24/48/96 бит действительно будет более полезным.
Для обработки текста Unicode с использованием гипотетического UTF-24 будет дешевле, чем UTF32; гипотетический UTF-12 будет хранить все одно- и двухбайтовые символы UTF-8 в 12 битах, а все трех- и четырехбайтовые символы UTF-8 - в 24 битах (диапазон будет немного уменьшен до 2 ^ 20 символов, но это все равно в четыре раза больше, чем щедро используется); Код будет проще, потому что есть только два варианта.
Для плавающей запятой обычно достаточно 48 бит. 96 бит значительно лучше, чем 80 бит. 24 бита полезны для графики; гораздо полезнее, чем 16-битные, поддерживаемые некоторыми видеокартами. 48-битные указатели могут обрабатывать 256 терабайт.
Единственный недостаток - это битовые массивы, где для вычисления байтов необходимо деление на 12. Если это кажется важным, я уверен, что деление на 12 может быть достаточно эффективно реализовано аппаратно.
источник
Это удобно из-за общих аппаратных архитектур, использующих кратные 8, например 32-битные и 64-битные архитектуры. Это означает большую эффективность при использовании 8-битного хранения и передачи данных.
«Тем не менее, соображения экономии в дизайне настоятельно требуют одного размера или очень немногих размеров, связанных с кратными или дробными (подмножениями) основного размера. Этот предпочтительный размер становится размером слова архитектуры».
Word (компьютерная архитектура)
Смотрите также: Какова история того, почему байты являются восьмибитными?
источник
2⁸-1
.Согласно статье Википедии на слово , это делает расчеты , связанные с адресацией памяти значительно проще:
источник
Это тесно связано с адресным пространством. Добавив еще один бит к вашей адресной шине, вы можете адресовать вдвое больше ячеек памяти. Поэтому, когда вы добавляете эту дополнительную строку, вы можете использовать ее в полном объеме.
Это приводит к естественному прогрессированию 1, 2, 4, 8, 16, 32 и так далее.
На техническом уровне производства также легко повторить тот же литографический рисунок. То есть удвоить его. Если вы начинаете с одной защелки, а затем удваиваете шаблон, вы пройдете 8, а не 6, 10 или 12.
источник
Не всегда ширина слова является степенью двойки. Недавно я занимался кодированием в DSP SHArC, который имеет 32-разрядную ширину слова для чисел, но не для кодов операций (шириной 48 бит).
Вероятно, причина, по которой ширины слов являются степенью двойки, заключается в том, что некоторые команды проверяют (или устанавливают, или очищают, или переключают) один бит или сдвиг (или поворот) влево или вправо на указанное количество бит. В коде операции есть битовое поле для указания местоположения одиночного бита или количества битов для сдвига. Если ширина слова является степенью двойки, это битовое поле требует log 2 (word_width) битов, чтобы охватить все слово. То есть, для слова, ширина которого 32 бита, требуется 5-битное поле в коде операции для этих операций. Если бы слово было шириной 33 бита, ему понадобилось бы 6, иначе оно не могло бы охватить все слово, но это также имело бы место, если бы слово было шириной 64 бита.
Биты в коде операции чрезвычайно ценны, поэтому они обычно не хотят их тратить. Тогда имеет смысл сделать слово степенью 2 в ширину.
Причина, по которой байты имеют ширину 8 битов, состоит в том, что это наименьшая степень двух, которая может содержать символ ASCII (который составляет 7 бит).
источник