Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Пусть есть задача в начале некоторого большого файла произвольного содержания записывать одно целое число, тоже произвольное. Проблема в том, что за записью этого числа (по условию задачи) идут какие-то не зависящие от него биты. Как указать, где оканчивается "тело" числа? Очевидно, возможны разные нотации записи этого числа. Например, если бинарная запись этого числа состоит из К битов, сначала ставить К-1 единиц, потом "0", потом само число. То есть для числа 255 получаем вид: "1111111011111111тело_файла..." Возможна ли более компактная нотация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 11:21 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что число не ограничено сверху? но какая-то вменяемая граница количества битов в нём есть? 4kkk хватит? Выдели первые 4 байта на количество битов своего числа, потом само число, потом независимый хвост. 4Г мало? выдели 8 байт всё равно столько на диск не поместится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 11:40 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
M бит размер числа, К бит число, тело. Размер M фиксированный, т.е. выбрать с запасом чтобы все возможные К входили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 11:44 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Akina, запись числа 1 займёт 8 байт + 1 бит? Это компактно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 11:44 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSзапись числа 1 займёт 8 байт + 1 бит? Это компактно? Можно еще размер размера писать, для 2^64 потребуется 6 бит т.е. для числа 1 запись такая: Код: sql 1. всего 1 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 12:00 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSВозможна ли более компактная нотация? Цель выбрать надо: компактизация в среднем или каждый раз? Может "оптимальное кодирование" что-то подскажет (подразумевается минимизация с целью передачи по каналам связи.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 12:02 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Dima TМожно еще размер размера писать, для 2^64 потребуется 6 бит т.е. для числа 1 запись такая: Код: sql 1. всего 1 байт А если размер размера размера добавить, то 6 бит хватит Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 12:06 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Dima T, да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 12:09 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSDima T, да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ... Для записи числа размером 2^64 бит потребуется 2 млн. террабайт. Т.е. можно смело предположить что писать больше 2^64 точно не потребуется, поэтому достаточно варианта с размером размера 21089437 . Про "размер размера размера" шутка была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 12:18 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSDima T, да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ... Посмотри Код Левенштейна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 13:47 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXS, Можно воспользоваться следующей логикой: для самого числа используем 7 бит из 8 каждого байта. Последний байт имеет первым битом 0, остальные байты - 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 23:38 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
В BCD-арифметике можно сохранять. Быстро парсится в десятичную. В системе Фибоначчи можно хранить. Уверен что этот вариант проще чем Левенштейн. Хотя возможно менее компактный на больших значениях. Да мало-ли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 00:16 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Код Левенштейна в Википекдии как-то муторно описан, а другое описание я искать поленился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 00:26 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Разумеется не надо тебе его реализовывать. Надо найти готовую реализацию. А кодить свою - это действительно муторно. Особенно в части тестирования. И поиска багов уже в реализации под разные платформы. Полюбому что-то вылезет пузом. Толи сдвиг (>>) толи битовые операции толи ХЗ что. Ты кстати зачем своё кодишь? Спортивный интерес? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 00:32 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Реально размышляю про архиватор. По-дилетантски, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 00:41 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXS, полезная тема. Особенно когда свои структуры данных создаешь. Некоторое время назад я предложил форуму написать утилиту для поиска уникальных строк в большом текстовом файле. И ты не поверишь, сколько идей было. И Диме - спасибо. И даже сердитый Зяма отметился. Но вот в чем штука. Любая хорошая идея требовала тщательно продумать как в памяти распределить структуры данных. Биткарты там.. хеш-таблички... деревья. Найти золотую пропорцию. А там еще столько технических нюансов - мама не горюй. И строки... и поиск и алгоритмизация и оптимизация. Вобщем у меня от этой задачи так голова разболелась что я даже ее отложил на годик. И хотя свои собственные решения для себя - очевидны как божий день - но когда занимашеся перфекционизмом то эти решения тухнут так и не выйде в альфа версию. И ты смотришь на них такой и думаешь... а задлянахрена вообще это? Так - то.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 00:50 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
maytonПосмотри Код Левенштейна. Во-первых, Омега-код Элиаса на один бит экономичней. Во-вторых, оба кода дают экономию для чисел меньше 16, и перестают быть экономичными для 16 и более. То есть, если преобладают числа от 1 до 16, то битовое кодирование оправдано. Если нет, эффективней кодировать байтами или иным размером слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 11:10 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
ptr128, вопрос не в кодировании самом по себе, а в том ЕЩЁ, чтобы отделить запись числа от следующих непосредственно за ней произвольных битов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 12:08 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSptr128, вопрос не в кодировании самом по себе, а в том ЕЩЁ, чтобы отделить запись числа от следующих непосредственно за ней произвольных битов. Это я понимаю, но в чем проблема, если кодирование не битовое, а по словам? То есть длина кода всегда кратна N бит, а сам код позволяет определить количество слов по N бит. Даже если слово у нас 8 бит (байт), то совсем не обязательно выравнивать его на границу байта в файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 12:44 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSПусть есть задача в начале некоторого большого файла произвольного содержания записывать одно целое число, тоже произвольное. Проблема в том, что за записью этого числа (по условию задачи) идут какие-то не зависящие от него биты. Как указать, где оканчивается "тело" числа? Очевидно, возможны разные нотации записи этого числа. Например, если бинарная запись этого числа состоит из К битов, сначала ставить К-1 единиц, потом "0", потом само число. То есть для числа 255 получаем вид: "1111111011111111тело_файла..." Возможна ли более компактная нотация?тут снова можно обратиться к Шеннону, который все это обдумал еще в 1945 году :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 15:27 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
Иван FXSвопрос не в кодировании самом по себе, а в том ЕЩЁ, чтобы отделить запись числа от следующих непосредственно за ней произвольных битов. В теори кодирования это свойство называется префиксностью. Необязательно префикс в программистском смысле. Есть срогое определение, не помню только. В пересказе - примерно то самое, что требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 15:34 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
"Префиксность" -- это про все подстроки строки. А здесь - только в одном месте, в начале строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 15:41 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
А вот и нет. Это относится к методу кодирования (строке, закодированной метдом). Я подразумевал, что заголовок строки и собственно строка "закодированы" разными методами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 17:16 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
ptr128maytonПосмотри Код Левенштейна. Во-первых, Омега-код Элиаса на один бит экономичней. Во-вторых, оба кода дают экономию для чисел меньше 16, и перестают быть экономичными для 16 и более. То есть, если преобладают числа от 1 до 16, то битовое кодирование оправдано. Если нет, эффективней кодировать байтами или иным размером слова. Во первых я ничуть не против кодов Элиаса. Во вторых во втором вашем тезисе есть заявление о том что "эффективней кодировать байтами". Это странно. Вы фактически опровергли работы Левенштейна и Элиаса. Чтобы что-то кодировать байтами или иным размером слова вы должны вернуться к началу и определиться с диапазоном. А поскольку автор еще не определился с диапазоном - то спорить не о чем. Если вы решили кодировать "байтами" то вам все равно необходимо где-то хранить длину байтов и мы неизбежно приходим к префиксным или унарным или любым другим способам кодирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 22:56 |
|
||
|
Компактная нотация бинарной записи числа
|
|||
|---|---|---|---|
|
#18+
S.G.тут снова можно обратиться к Шеннону, который все это обдумал еще в 1945 году :) Работы Шеннона относились к проблемам и вызовам которые стояли в середине 20-го века. Шеннон оперировал понятием "символа". Это понятие возникло задолго до байта или бита. Символ - это единица информации в телеграфе. В телексе. И в прочих простых устройствах связи которые работали по аналаговым каналам. Нисколько не умаляя работ этого замечательного инженера я скажу что он жил в своё время и писал про своё. И актуальность и применимость его исследований к современным архиваторам - весьма ограничена. Так-же как и работы Дональда Кнута для современного веб-разработчика. Большая часть материала - не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2018, 23:06 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39580936&tid=1340186]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 292ms |

| 0 / 0 |
