Биты в памяти компьютера не имеют собственного адреса; только байты.

Если вы хотите манипулировать битами, вам нужно прочитать байт, распаковать его с помощью побитовых операторов и упаковать обратно. Не все знают, как это сделать, а код сложно писать или читать, и он может содержать ошибки.

Вместо этого языки программирования должны поддерживать типы данных бит, двойной бит и квадробит [1]. Если это то, что вам нужно, вы можете использовать его. Язык может генерировать для вас побитовые операции, которые легче кодировать, без ошибок и читабельно. Ведь в этом весь смысл языка высокого уровня — предоставлять удобные для людей абстракции [2][3].

[1] Почему не 6 бит? Потому что это не степень числа 2. По той же причине языки имеют 2-байтовый и 4-байтовый тип данных, но не 3-байтовый.

[2] C имеет битовые поля, но только в структуре, что несовместимо. У меня может быть целое число либо само по себе, либо внутри структуры, так почему же я не могу иметь только кусочек? Возможно, у меня нет других переменных для объединения в структуру.

[3] Возникает вопрос, почему биты не могут иметь собственных адресов. Почему компилятор должен обходить отсутствие аппаратной поддержки?

Почему биты должны быть упакованы в байты, которые затем адресуются?

И если вы согласны с этим, то почему бы не упаковать биты в 16-битные слова, к которым затем осуществляется адресация? В этом случае, если вы хотите прочитать байт, вы должны прочитать 16-битное слово, а затем использовать побитовые операторы для его извлечения. Если вы думаете, что это глупо, то это только потому, что то, к чему мы привыкли, кажется естественным, а альтернативы — безумием. Что особенного в цифре 8? Это произвольный артефакт истории, который следует пересмотреть, а не слепо предполагать, что какое бы то ни было решение было правильным.

Теперь, когда многие процессоры являются 64-разрядными, адресное пространство не является ограничением. Даже при побитовой адресации у вас будет 56-байтовое адресное пространство, чего вполне достаточно.

Даже если вы не согласны с этим примечанием и настаиваете на том, что процессоры не должны меняться, нет никаких причин, по которым язык не должен предлагать битовые, двухбитные и четырехбитные типы данных.