2016-08-29 1 views
-1

Wie viele Bits würde es brauchen, um 800.000 Insektenarten zu benennen? Ich habe mich gefragt, ob du überhaupt eine bestimmte Nummer finden könntest. Wäre nicht die Anzahl der Bits für jeden Namen basierend auf seiner Länge unterschiedlich? Wie können Sie in einem solchen Fall wissen, wie viele Bits benötigt würden, um 800.000 Insektenarten zu benennen?Wie viele Bits braucht es, um ungefähr 8000 Tierarten zu benennen?

(lese ich über Computer Architektur und Design, und ich dieses Gehirn Teaser gefunden)

+0

Klingt eher wie ein Interview Frage als etwas, das man in einem lesen Buch. Interviewer verwenden diese Art von Frage, um Ihre Denkfähigkeiten zu bewerten, nicht weil es eine tatsächliche Antwort gibt. Klingt nicht so, als ob du es gut gemacht hättest. :-) –

+1

Nein, das war nicht für irgendein Interview. Es ist nur eine Art Denkschrift in Bezug auf Computerarchitektur und Design. Außerdem habe ich angefangen, über die Dinge unter der Haube eines Computers zu lernen. – ceeks

Antwort

1

du annähern können, wenn Sie die durchschnittliche Länge jedes Insekt Namen kannte (in Zeichen) und multipliziert es um 8 (die Anzahl der Bits in einer ASCII-Zeichendarstellung).

Zum Beispiel (die durchschnittliche Anzahl der Buchstaben pro Insekten Namen unter der Annahme, 10):

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

Sie würden nicht alle Namen müssen ascii verwenden, aber zu vertreten. Da es im Alphabet nur 26 Buchstaben gibt, müssten Sie wirklich nur 5 Bits (2^5 = 32) verwenden, um jeden Buchstaben zu speichern. Dann würden Sie haben:

800000 * 5 * 10 = 40000000 

Dieses 24000000 weniger Bits sein würde (für dieses Beispiel).

1

Wenn Zahlen im Namen von Arten erlaubt sind, könnten Sie sie einfach species #123456 nennen. Das Speichern jedes dieser Namen benötigt 20 Bits, da nur die Nummer relevante Information ist, während der Text species # redundant ist.

Wenn die Namen keine Zahlen enthalten können, aber aus einer laufenden Nummer ohne weiteres Wissen generiert werden können, d. H. Eine Funktion generateName(n), benötigen Sie auch nur 20 Bits.

Wenn Sie eine Liste von vordefinierten Namen haben, die jeweils höchstens len Zeichen lang sein und aus dem Alphabet a-z und einen Raum, müssen Sie 800000 * (log(len)/log(2) + len * log(26 + 1)/log(2)) Bits pro Namen.

Da die Frage vage ist, ist es schwierig zu beantworten.

0

Es hängt von jeder Namenslänge und was Sie für das Speichern der Daten (Datenbank, TXT, JSON, CSV, usw.) verwenden möchten.

aber wenn wir mit dem Namen Länge bis 20 Zeichen immer mit Leerzeichen für Kurznamen und Komma calcolate vorausgesetzt wollen die Zahl zu trennen ist:

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