2016-08-29 19 views
-1

需要多少位来命名800,000种昆虫?我想知道你是否可以拿出一个特定的号码。根据长度不同,每个名称的位数不同?在这种情况下,你怎么知道需要多少位来命名80万种昆虫?需要多少位来命名大约8000种动物?

(我读有关计算机体系结构和设计,我发现这个谜)

+0

听起来更像一些接受采访的问题,你在读书。面试官使用这类问题来评估你的思维能力,而不是因为有真正的答案。听起来不像你做得很好。 :-) –

+1

不,这不是任何面试。这只是一种与计算机体系结构和设计有关的脑筋急转弯。另外我刚开始学习计算机背后的东西。 – ceeks

回答

1

,如果你知道每个昆虫名的平均长度(以字符),你可以接近这一点,乘以8它( ascii字符表示中的位数)。

例如(假设每名虫字母的平均数是10):

800000 * 8 * 10 = 64000000 
<numberOfInsects> * <numberOfBitsPerCharacter> * <averageNumberOfLettersPerName> = <totalNumberOfBitsNeeded> 

你不必然而使用ASCII来代表所有名称。由于字母表中只有26个字母,因此您只需要使用5位(2^5 = 32)来存储每个字母。那么你会有:

800000 * 5 * 10 = 40000000 

这将是24000000位(在这个例子中)。

1

如果允许数字物种的名字,你可能只是他们的名字species #123456。存储每个这些名称需要20位,因为只有编号是相关信息,而文本species #是多余的。

如果名称不能包含数字,但可以从一个正在运行的数量也不会产生进一步的认识,即一个功能generateName(n),你也只需要20位。

如果您有一个预定义名称的列表,每个长度至多为len个字符,并且由字母a-z和一个空格组成,则每个名称需要800000 * (log(len)/log(2) + len * log(26 + 1)/log(2))个位。

由于问题比较模糊,所以很难回答。

0

这取决于每个名字的长度和你要使用保存数据(数据库,TXT,JSON,CSV等)做什么。

,但如果我们想calcolate与名称长度20个字符总是使用空间的短名称和逗号分隔数假设为:

(800000 x 20) + (800000) = 16800000 bytes 16.02173 Mb