1

В двоичном формате до сколько раз можно повторять 1 (один) или 0 (ноль).

Допустим, у меня есть myfile.mp3 ; если бы я читал двоичный код этого файла, это было бы что-то вроде «010001001010 ...»

в этом случае 0 повторяется не более 3 раз.

будет ли двоичный код иметь 9 (или более) нулей между 1? например: 1000000000101001 .... >> здесь девять нулей ...

4 ответа4

7

Вы спрашиваете о двоичных строках. В общем смысле, нет ограничения на число 0 или 1, которые могут появляться в последовательности. То есть бесконечно длинная строка из 0 является допустимым двоичным кодом.

Вы также спрашиваете о бинарных форматах. Данные в компьютере - это не просто случайные двоичные строки; они отформатированы особым образом, чтобы специально разработанные машины, называемые компьютерами, могли обрабатывать их как информацию (например, MP3) или как инструкции (например, winamp.exe), или даже как кодировки передачи (например, кодировки, используемые в USB). или Ethernet).

В практическом смысле, вы не найдете строк произвольной длины 0 или 1 в исполняемом коде. Кодировки передачи, если они не синхронизированы с помощью другого метода, могут вставлять дополнительные биты после определенного количества битов данных, поэтому строки произвольной длины там также не будут найдены. Форматы данных могут быть более гибкими, а некоторые допускают длинные строки 0 или 1, но форматы, такие как MP3, требуют обычных маркеров (опять же, для синхронизации), поэтому даже MP3 без звука не будет содержать все 0.

Итак: может ли двоичная строка содержать последовательность из 9 нулей? Конечно, это вполне возможно, и, вероятно, очень распространено. Может ли конкретный двоичный формат содержать это? Может быть. Но невозможно сказать, не указав, в каком формате.

3

Возможно, что это повторяется любое количество раз. Двоичные и десятичные почти одинаковы. Если у вас есть двоичное число abcde, это просто означает, что abcde = a * 2 ^ 4+b * 2 ^ 3+c * 2 ^ 2+d * 2+e.

Поэтому, если вы хотите записать 0 в файл, вам нужно будет записать байт всех 0, и если у вас длинная последовательность 0.

Также, например, 10000000(двоичный) = 128(десятичный), и если вы хотите умножить его на 2 любое количество раз, вам придется добавить столько нулей в конец числа. (Я сделал небольшую смесь между действительными числами и компьютерным представлением чисел, но я думаю, что вы можете увидеть общую идею).

Изменить: как продолжение вопросов в ваших комментариях:

Любой язык программирования способен открывать файлы для чтения в двоичном формате.(Здесь под двоичным символом он понимается как двоичный по сравнению с текстом. И вы, скорее всего, найдете такие строки в несжатых файлах изображений, таких как несжатый формат BMP, выводимых художником.

Ваша техника сжатия - одна из первых, использовавшихся для сжатия изображений, я думаю, что они были названы RLE, после названия сжатия, но я действительно точно не помню. (RLE в Википедии)

Если вы хотите узнать больше о сжатии, вы можете посмотреть википедию, так как там много информации. Конкретные широко используемые и не очень сложные сжатия - это кодирование Хаффмана, а также вы можете взглянуть на Lempel Ziv, используемый zip.

2

Это в точности эквивалентно тому, чтобы спросить, сколько нулей, или единиц, или двойок и т.д. Вы можете иметь в строке в десятичном числе. Столько, сколько вы хотите, почему бы быть предел?

Конечно, существует ограничение на максимальный размер, который может содержать любая конкретная переменная / файл / диск, но это практический вопрос, который является вторичным по отношению к математике.

Более конкретно, если вы спрашиваете, насколько вероятна конкретная последовательность нулей в файле MP3, потому что это сжатый формат файла, это менее вероятно, когда длина последовательности увеличивается. Вы найдете много пар нулей, но меньше прогонов из трех, и еще меньше прогонов из 4 и т.д. Процедуры сжатия специально ищут шаблоны, поэтому удаляют их, чтобы уменьшить размер файла, и заменяют их ссылкой на шаблон - в качестве приблизительного объяснения сжатия файлов.

1

Файл со всеми единицами или всеми нулями не был бы очень интересным файлом. Если бы это были все нули, то не содержало бы никаких значимых данных. Если бы это были все, тогда могли бы присутствовать некоторые данные, но это зависело бы от того, в каком формате должен был быть файл.

Файл будет содержать "интересные" данные только в том случае, если он состоит из шаблонов 1 и 0, и, в зависимости от кодировки файла, они могут быть любой длины. Хотя длинные пробеги одного или другого будут маловероятными.

Это чистое предположение, но я ожидаю, что любой тип файла будет содержать примерно одинаковое количество единиц и нулей, и просто просмотр двоичных данных не скажет вам, какой это был тип файла. Вы должны были бы интерпретировать поток для кодов ascii, числа и т.д., Чтобы извлечь смысл.

Чтобы ответить на ваш второй вопрос в вашем комментарии к ответу @ SurDin - да, любой файл можно прочитать как двоичный поток, но это будет зависеть от языка, на котором написана программа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .