在二进制中,1(一)或 0(零)最多可以重复多少次。
假设我有一个myfile.mp3
;如果我要读取该文件的二进制代码,那将是类似“010001001010...”
在这种情况下,0 最多重复 3 次。
二进制代码中的 1 之间会有 9 个(或更多)零吗?例如:1000000000101001....>> 这里有九个零...
答案1
你问的是二进制字符串。一般来说,没有限制可以按顺序出现的 0 或 1 的数量。也就是说,无限长的 0 串是有效的二进制。
你还问的是二进制格式计算机中的数据不仅仅是随机的二进制字符串;它们以特定的方式格式化,以便专门设计的机器称为电脑可以处理它们,作为信息(如 MP3)或指令(如 winamp.exe),甚至作为传输编码(如 USB 或以太网中使用的编码)。
在一个实际的从某种意义上说,在可执行代码中你不会找到任意长度的 0 或 1 字符串。如果传输编码未通过其他方法同步,则可能会在一定数量的数据位后插入额外的位,因此在那里也不会找到任意长度的字符串。数据格式可以更灵活,有些格式允许长字符串 0 或 1,但像 MP3 这样的格式需要常规标记(同样,用于同步),因此即使是静音的 MP3 也不会包含所有 0。
那么:一个二进制字符串能包含 9 个零的序列吗?当然,这是完全有可能的,而且可能非常常见。一个特定的二进制字符串能格式包含这个吗?也许吧。但如果不指定格式,就无法判断。
答案2
它可能重复任意次。二进制和十进制几乎相同。如果你有一个二进制数 abcde,它只是意味着 abcde = a*2^4+b*2^3+c*2^2+d*2+e。
因此,如果您想将 0 写入文件,您必须写入一个全为 0 的字节,并且如果您有一长串 0。
例如 10000000(二进制)= 128(十进制),如果你想将它乘以 2 任意次,你就必须在数字末尾添加许多个 0。(我在实数和计算机数字表示之间做了一点混合,但我想你应该能明白其中的大概意思)。
编辑:作为您评论中问题的延续:
任何编程语言都能够打开文件以二进制格式读取。(这里的二进制是指二进制与文本)并且您最有可能在未压缩的图像文件中找到此类字符串,例如画家输出的未压缩的 BMP 格式。
您的压缩技术是最早用于压缩图像的技术之一,我认为它们被命名为 RLE,以压缩的名称命名,但我真的不记得具体名称了。(维基百科上的 RLE)
如果你想了解更多关于压缩的信息,你可以去维基百科看看,因为那里有很多信息。具体广泛使用且不太复杂的压缩是霍夫曼编码,你也可以看看 zip 使用的 Lempel Ziv。
答案3
这完全等同于问十进制数中可以有多少个连续的零、一、二等。任意数量,为什么会有限制?
当然,任何特定变量/文件/磁盘可以容纳的最大大小都是有限制的,但这是一个实际问题,与数学无关。
更具体地说,如果您问 MP3 文件中特定零序列出现的可能性有多大,因为它是一种压缩文件格式,那么随着序列长度的增加,出现的可能性就越小。您会发现很多对零,但三个零序列的出现次数较少,四个零序列的出现次数甚至更少,等等。压缩例程专门寻找模式,因此会删除它们以减小文件大小,并用对模式的引用替换它们 - 这是对文件压缩的近似解释。
答案4
全部为 1 或全部为 0 的文件不会是非常有趣的文件。如果全部为零,则不会包含任何有意义的数据。如果全部为 1,则可能会存在一些数据,但这取决于文件应采用的格式。
如果文件由 1 和 0 的模式组成,则文件将仅包含“有趣”的数据,并且根据文件的编码,这些模式可以是任意长度。尽管其中一个或另一个模式的长序列不太可能出现。
这纯粹是猜测,但我希望任何不同类型的文件包含的 1 和 0 数量大致相同,仅查看二进制数据无法告诉您文件类型。您必须解释流中的 ASCII 码、数字等才能提取含义。
回答您对@SurDin 的答案的评论中的第二个问题 - 是的,可以将任何文件读取为二进制流,但这取决于编写程序所使用的语言。