Компактная нотация бинарной записи числа

Иван FXS
Дата: 09.01.2018 11:21:59
Пусть есть задача в начале некоторого большого файла произвольного содержания записывать одно целое число, тоже произвольное.

Проблема в том, что за записью этого числа (по условию задачи) идут какие-то не зависящие от него биты. Как указать, где оканчивается "тело" числа?

Очевидно, возможны разные нотации записи этого числа. Например, если бинарная запись этого числа состоит из К битов, сначала ставить К-1 единиц, потом "0", потом само число. То есть для числа 255 получаем вид: "1111111011111111тело_файла..."

Возможна ли более компактная нотация?
Akina
Дата: 09.01.2018 11:40:39
Я так понимаю, что число не ограничено сверху? но какая-то вменяемая граница количества битов в нём есть? 4kkk хватит? Выдели первые 4 байта на количество битов своего числа, потом само число, потом независимый хвост. 4Г мало? выдели 8 байт всё равно столько на диск не поместится...
Dima T
Дата: 09.01.2018 11:44:16
M бит размер числа, К бит число, тело.

Размер M фиксированный, т.е. выбрать с запасом чтобы все возможные К входили.
Иван FXS
Дата: 09.01.2018 11:44:39
Akina,

запись числа 1 займёт 8 байт + 1 бит? Это компактно?
Dima T
Дата: 09.01.2018 12:00:32
Иван FXS
запись числа 1 займёт 8 байт + 1 бит? Это компактно?

Можно еще размер размера писать, для 2^64 потребуется 6 бит
т.е. для числа 1 запись такая:
000001 1 1

всего 1 байт
exp98
Дата: 09.01.2018 12:02:18
Иван FXS
Возможна ли более компактная нотация?
Цель выбрать надо: компактизация в среднем или каждый раз?
Может "оптимальное кодирование" что-то подскажет (подразумевается минимизация с целью передачи по каналам связи.)
Dima T
Дата: 09.01.2018 12:06:30
Dima T
Можно еще размер размера писать, для 2^64 потребуется 6 бит
т.е. для числа 1 запись такая:
000001 1 1

всего 1 байт

А если размер размера размера добавить, то 6 бит хватит
001 1 1 1

Иван FXS
Дата: 09.01.2018 12:09:58
Dima T,

да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ...
Dima T
Дата: 09.01.2018 12:18:35
Иван FXS
Dima T,

да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ...

Для записи числа размером 2^64 бит потребуется 2 млн. террабайт. Т.е. можно смело предположить что писать больше 2^64 точно не потребуется, поэтому достаточно варианта с размером размера 21089437. Про "размер размера размера" шутка была.
mayton
Дата: 09.01.2018 13:47:56
Иван FXS
Dima T,

да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ...

Посмотри Код Левенштейна.