Компактная нотация бинарной записи числа
Иван 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,
да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ... |
Посмотри Код Левенштейна.