2

我正在阅读一篇关于二进制数的文章,最后有一些练习问题,但没有给出问题的解决方案。最后一个是“表示字母需要多少位?”。能否告诉我该问题的答案并简要解释原因?谢谢。

4

4 回答 4

4

您只需要 5 位,因为您数到 26(如果我们只取大写或小写字母)。5 位将数到 31,因此您实际上拥有的空间超出了您的需要。您不能使用 4,因为它只能算到 15。

如果你想要大写和小写,那么 6 位就是你的答案 - 6 位会很高兴地算到 63,而你的双字母表有 (2 * 24 = 48) 个字符,再次留下足够的空间。

于 2010-11-06T22:45:29.010 回答
3

这取决于您对字母的定义。如果要表示 26 个字母的罗马字母 (AZ) 中的一个字符,则需要 log2(26) = 4.7 位。显然,在实践中,您需要 5 位。

但是,给定无限的字符流,理论上您可以提出接近 4.7 位的编码方案(不再存在单个字符和位向量之间的一对一映射)。

如果您正在谈论表示实际的人类语言,那么由于冗余,您可以使用比这低得多的数字(在 1.5 位/字符的区域内)。但这太复杂了,无法在这里一篇文章中讨论……(谷歌关键词是“熵”和“信息内容”)。

于 2010-11-06T22:46:12.007 回答
2

字母表中有 26 个字母,所以 2^5 = 32 是包含所有字母的最小字长。

于 2010-11-06T22:47:04.917 回答
0

代表需要多直接?如果您需要没有翻译层的 1:1,那么 5 位就可以了。但是,如果可以选择翻译层,那么您可以少花钱。例如,摩尔斯电码可以用 3 位来完成。:)

于 2010-11-06T23:28:01.810 回答