Repetição binária

1

Em binário até quantas vezes um 1 (um) ou um 0 (zero) podem ser repetidos.

Digamos que eu tenha um myfile.mp3 ; se eu fosse ler o código binário desse arquivo, seria algo como "010001001010 ..."

nesta ocasião o 0 é repetido no máximo 3 vezes.

um código binário teria 9 (ou mais) zeros entre os 1s? por exemplo: 1000000000101001 .... > > há nove zeros aqui ...

    
por Val 04.02.2010 / 14:00

4 respostas

7

Você está perguntando sobre cadeias binárias. Em um sentido geral, não há para o número de 0s ou 1s que podem aparecer em seqüência. Ou seja, uma cadeia infinitamente longa de 0 é binária válida.

Você também está perguntando sobre os formatos binários . Dados em um computador não são apenas seqüências binárias aleatórias; Eles são formatados de uma maneira particular, para que máquinas especialmente projetadas, chamadas computadores , possam processá-las, como informações (como um MP3) ou como instruções (como o winamp.exe) ou até como codificações de transmissão. (como as codificações usadas em USB ou Ethernet).

Em um sentido prático , você não encontrará strings de tamanho arbitrário de 0 ou 1 no código executável. Codificações de transmissão, se não forem sincronizadas por outro método, podem inserir bits extras após um determinado número de bits de dados, portanto, cadeias de comprimento arbitrário também não serão encontradas. Formatos de dados podem ser mais flexíveis, e alguns permitirão longas seqüências de 0s ou 1s, mas formatos como MP3 requerem marcadores regulares (novamente, para sincronização), portanto, mesmo um MP3 de silêncio não conterá todos os 0s.

Então: uma string binária pode conter uma sequência de 9 zeros? Claro, é bem possível e provavelmente muito comum. Um formato binário em particular poderia conter isso? Talvez. Mas é impossível dizer sem especificar o formato.

    
por 04.02.2010 / 14:21
3

É possível que seja repetido várias vezes. Binário e decimal são quase os mesmos. Se você tiver um número binário abcde, significa apenas que abcde = a * 2 ^ 4 + b * 2 ^ 3 + c * 2 ^ 2 + d * 2 + e.

Então, se você quiser escrever 0, para um arquivo, você terá que escrever um byte de todos os 0s, e se você tiver uma sequência longa de 0s.

Além disso, por exemplo, 10000000 (binário) = 128 (decimal), e se você quiser multiplicá-lo por 2 qualquer número de vezes, você terá que adicionar tantos 0s ao final do número. (Eu fiz uma pequena mistura entre números reais e representação de números no computador, mas acho que você pode ver a ideia geral).

Editar: como continuação das perguntas nos seus comentários:

Qualquer linguagem de programação é capaz de abrir arquivos para ler em formato binário (aqui, por binário, significa binário versus texto) E é mais provável que você encontre essas cadeias em arquivos de imagem descompactados, como o formato BMP descompactado, produzido pelo pintor.

Sua técnica de compressão é uma das primeiras usadas para comprimir imagens, eu acho que elas foram nomeadas RLE, após o nome da compressão, mas eu realmente não me lembro exatamente. ( RLE na wikipedia )

Se você quiser ler mais sobre compressão, você pode procurar na wikipedia, já que ela contém muitas informações. Compressões específicas amplamente utilizadas e não muito complexas é a codificação Huffman, e você também pode dar uma olhada no Lempel Ziv usado pelo zip.

    
por 04.02.2010 / 14:05
2

É exatamente equivalente a perguntar quantos zeros, ou uns, ou dois, etc, você pode ter em uma linha em um número decimal. Quantos você quiser, por que haveria um limite?

Existe, é claro, um limite para o tamanho máximo que qualquer variável / arquivo / disco em particular pode conter, mas essa é uma questão prática que é secundária às matemáticas.

Mais especificamente, se você perguntar qual é a probabilidade de uma sequência específica de zeros em um arquivo MP3, porque é um formato de arquivo compactado, é menos provável à medida que o comprimento da sequência aumenta. Você encontrará muitos pares de zeros, mas menos execuções de três, e menos execuções de 4, etc. As rotinas de compactação estão procurando especificamente padrões, portanto, estão removendo-os para reduzir o tamanho do arquivo e substituindo-os por uma referência ao padrão - como uma explicação aproximada da compactação de arquivos.

    
por 04.02.2010 / 14:23
1

Um arquivo com todos os 1s ou todos os 0s não seria um arquivo muito interessante. Se fossem todos zeros, não conteria nenhum dado significativo. Se fossem todos, então poderia haver alguns dados presentes, mas isso dependeria de qual formato o arquivo deveria ser.

Um arquivo só conterá dados "interessantes" se consistir em padrões de 1s & 0s e, dependendo da codificação do arquivo, estes podem ser de qualquer tamanho. Apesar de longas corridas de um ou outro será improvável.

Este é um palpite puro, mas eu esperaria que qualquer tipo de arquivo contenha aproximadamente o mesmo número de 1s & 0s e apenas olhando para os dados binários não lhe diriam que tipo de arquivo era. Você teria que interpretar o fluxo para códigos ascii, número etc. para extrair significado.

Para responder sua segunda pergunta em seu comentário sobre a resposta do @ SurDin - sim, é possível ler qualquer arquivo como um fluxo binário, mas isso dependerá do idioma usado para escrever o programa.

    
por 04.02.2010 / 14:34

Tags