300 обычно занимает два байта, , если вы используете 2-байтовый фиксированный формат для его представления. Если вы используете 4-байтовый или 8-байтовый формат, это займет 4 байта или 8 байтов. Если вы используете 1-байтовый формат, вы вообще не можете представить 300, если только вы не используете действительно странное кодирование.
Если вы хотите использовать кодирование переменной длины, тогда стандарт Представление дополнения 2 недостаточно, потому что в нем нет информации о длине. Вы не представляете, где останавливается число . Вы можете кодировать длину по отдельности, но это увеличит ваши требования к пространству ... или вы можете использовать что-то подобное представлению protobuf varint, которое может представлять 300 в 2 байтах и включает сигнал о том, что число завершено в этот момент.
(Или вы можете использовать один из множества других кодировок. Варианты Protobuf не однозначно превосходят другие представления, даже с точки зрения используемого пространства. Всегда есть компромиссы.)