Встроенный тип данных размером менее 1 байта

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


person r15habh    schedule 03.11.2011    source источник


Ответы (1)


Для языков, которые вообще имеют ручное управление памятью / жонглирование адресами, аппаратное обеспечение диктует некоторые ограничения на эти функции. Очень немногие архитектуры поддерживают однобитовую адресацию. Как правило, наименьшая единица хранения — это байт, поэтому они и используют его.

Чтобы все адреса ссылались на биты, либо требуется представление адреса больше среднего (удар по производительности - вдвое больше инструкций для всего, что касается адресов), либо значительно ограничивается доступное адресное пространство. Добавление специального регистра (и особого вида адреса) усложняет язык для чего-то, что редко требуется (обратите внимание, что у C есть связанная, но ИМХО более общая версия: битовые поля в структурах — структуры по-прежнему имеют sizeof, измеряемое в байтах, но структура с 8 членами может иметь общий размер в один байт). Битовые операторы, которые в любом случае включены, позволяют эмулировать их в пользовательском коде.

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

person Community    schedule 03.11.2011
comment
Имеет смысл, также сделает декодер, подключенный к MAR 8x, громоздким без особых преимуществ + уменьшит адресное пространство в 8 раз. - person r15habh; 03.11.2011