Размер файла в FAT хранится в 32-битном поле.
В FAT32 поле обрабатывается как беззнаковое, что позволяет использовать файлы размером до 4294967294 байт (по-видимому, 4294967295 по какой-то причине недопустимо, возможно, где-то в качестве флага использовался «-1»).
В FAT16 поле ограничено диапазоном 32-разрядного числа со знаком. Я ожидаю, что причиной этого является устаревший код, который был записан обратно, когда 2 ГБ считался бы безумным размером для файла. Файловые системы FAT16 за пределами 2 ГБ были странностью в любом случае *.
Для AIUI в FAT12 размер файла ограничен 32 МБ (не 32 КБ!) Не из-за каких-либо ограничений, специфичных для размера файла, а просто потому, что это максимальный размер тома, и вы не можете иметь файл больше, чем том. То же самое относится и к ранним версиям FAT16.
* Версия FAT16, используемая в DOS 4 через windows 95, была ограничена 64 секторами на кластер, что в типичных 512-байтовых секторах означало размер тома примерно 2 ГБ. NT удвоил максимальное число секторов на кластер, позволив ~ 4 ГБ томам с 512 байтовыми секторами, а 98 добавил поддержку чтения / записи, но не создавая и не восстанавливая такие волюмы. Большие объемы были бы теоретически возможны, если бы базовое устройство имело более крупные сектора, но я не видел доказательств того, что это на самом деле произошло на практике.