Язык программирования C создает абстракцию, что файлы представляют собой потоки байтов. Что касается C, то байт состоит из количества бит (1 или 0 значений), равного CHAR_BIT
.
То, хранит ли аппарат на самом деле байт в виде количества битов, не имеет значения для C, поскольку реализация C (в сочетании с ОС и т. Д.) Заставит его выглядеть так, как если бы он был. Если вы можете спроектировать носитель данных с множеством крошечных маленьких двоичных объектов, каждое из которых может находиться в любом из 256 состояний, тогда вы можете хранить 1 байт на каждый двоичный объект.
Но на самом деле, как магнитные, так и флэш-накопители имеют микроскопические структуры, соответствующие одному биту. Аппаратное обеспечение не обеспечивает прямой доступ к единственному биту, но они там есть. Вопрос о том, соответствует ли один бит на носителе памяти одному биту в файле, - это другое дело - и аппаратное обеспечение, и программное обеспечение файловой системы могут выполнять ряд операций над данными (сжатие, шифрование, дублирование RAID, разреженные файлы), которые делают все гораздо сложнее, чем просто «8 бит на диске равны одному байту файла».