Подтвердить что ты не робот

В файл можно записать менее 1 байт

Насколько я знаю, наименьшая единица в C есть byte. Откуда это ограничение? ЦП?

Например, как я могу записать nibble или один bit в файл?

4b9b3361

Ответ 1

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

И, собственно, этот 1 байт займет в общей сложности более 1 байта пространства. В зависимости от ОС, типа системного файла и т.д. Все, что вы сохраняете в виде файла, будет использовать по крайней мере один блок. Размер блока зависит от используемой файловой системы. Затем этот 1-бит будет записан как 1-байтовый и может занимать до 4kB вашего диска.

В wikipedia вы можете прочитать что-то о байте, являющемся наименьшим блоком данных на многих компьютерах.

Ответ 2

Собственно, он char - byte не является стандартным типом C.

Ограничение происходит из стандарта C и является тавтологическим: char является наименьшим полным типом в C, потому что он определяется как таковой, а размеры всех других типов определяются как кратные размеру char ( размер которого всегда 1.)

Теперь количество бит в char может варьироваться от платформы к платформе. Количество бит в конечном итоге определяется аппаратно, хотя в большинстве систем в наши дни используется 8-бит char s. char должен представлять наименьшую адресуемую единицу памяти (опять же, по определению.)

Ответ 3

Кроме того, данные записываются в файлы в секторах (например, 512 байт или около того). И если нам нужно изменить только один байт, весь сектор читается, исправляется и записывается обратно.

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