p[
Цифровой множитель — это компактный дескриптор размера памяти, представляющий собой степень двойки (N), до которой необходимо возвести 2, чтобы получить фактический размер блока данных в байтах. Стандарт предлагает два метода его использования: неявный (через общий размер) и явный (через выделенный байт в заголовке), последний из которых является эффективным решением для организации заголовков данных в аппаратном обеспечении и системном программировании.
]p
p[
Это логарифм по основанию 2 от размера блока памяти, выраженного в байтах. Если размер блока S = 2^N байт, то N и есть цифровой множитель.
]p
p[
Подразумевает, что память всегда имеет определенную длину, а именно степени "2".
]p
p[]p
p[На примере обычного файла.
]p
p[]p
p[b[Беззнаковый формат (общий размер)]b]p
p[]p
p[Например, файл, размером 128 байт.]p
p[]p
2^0 - 1 байт, наш файл явно больше весит, следом идет p[]p
2^1 - 2 байт, это означает, что если файл 2 байта, его размер (2^1)p[]p
2^2 - 4 байт, само собой 4 байта файла означает что его размер был указан как (2^2)p[]p
2^3 - 8 байт, ...p[]p
2^4 - 16 байт,...p[]p
2^5 - 32 байт, ставки по тихоньку повышаютсяp[]p
2^6 - 64 байт, ...p[]p
2^7 - 128 байт, и вот мы дошли до нашего размера файлаp[]p
...p[]p
2^255p[]p
p[]pp[]pp[]p
[2^10] 1 килобайтp[]p
[2^20] 1 мегабайтp[]p
и так, мы узнали, что файл взят с 2^7, или с "Цифровым множителем 7"
p[]pp[]p
Но у него есть один недостаток, если, допустим мы расчитывали, что наша память будетиспользовать скажем 2 множитель, но вдруг, нужно записать хотя бы на 1 байт больше, (5 байт в общем) то нам придется наш архив увеличить уже не до 5 байтов, а по цифровому множителю 3, это уже 8 байтов, и оставшиеся 3 байта так и останутся как 0x00.p[]p
p[]pp[]p
b[Знаковый формат (раздробленый)]b
p[]pp[]p
сдесь уже не будет работать вычисление по общему размеру, например файл, размером 128 байт уже может быть разделен по другому, а именно...
p[]pp[]pp[]p
[сегмент [1 байт на указание размера в цифро-множителях][остальные байты (-1 байт)данные]]
p[]pp[]pp[]p
и так, получается, что можно получить обсолютно разные значение, но кратное к 2.
p[]p
p[]p
В чем смысл? это решает базовую проблему в заголовках, в компьютерном мире глубоко в железе размером ячейка для данных указывается отдельно, этот стандарт как раз для этого.
p[а получить инструменты по этому стандарту можно l[https!://github.com/OkkoBitte/lstc:получить сдесь.]l]p