it-swarm.dev

Warum ist 2 ^ 16 eine "spezielle" Nummer?

OK, ich fühle mich dumm, wenn ich das frage - aber in Jeffs Artikel: Den Bildschirm des Interviewtelefons richtig machen und ursprünglich angegeben in die 5 wesentlichen Fragen zum Telefonbildschirm :

Sie sollten dich nicht verständnislos anstarren, wenn du mit 2 ^ 16 fragst. Es ist eine besondere Nummer. Sie sollten es wissen.

Ich bin seit einiger Zeit Entwickler\Softwareentwickler\Code-Affe\was auch immer, und ich glaube nicht, dass ich jemals darauf gestoßen bin. Ich meine, ich kann sicher zählen, dass Binärwerte grundlegende Operationen an ihnen usw. usw. ausführen. Aber ich sehe nicht, was an diesem Wert "besonders" ist.

49
javamonkey79

(216 - 1) oder 65535 oder 0xFFFF oder "64k" ist der Maximalwert von 2 Bytes. Lange Zeit verwendeten CPUs 16-Bit-Architektur und Betriebssysteme basierten ebenfalls auf 16-Bit-Operationen und "Wörter" . Es gab 16-Bit-Befehle und 16-Bit-Speicheradressen. Viele Systeme/Compiler verwenden immer noch 16 Bit für Ganzzahlen.

Also (216 - 1) ist etwas Besonderes, da es die größte Zahl ist, die eine 16-Bit-Ganzzahl (ohne Vorzeichen) enthalten kann, und die größte Speicheradresse, auf die eine 16-Bit-Architektur zugreifen kann.

82

Aus dem ganzen Körper aus Steve Yegges Artikel,

Die Kandidaten sollten wissen, was Bits und Bytes sind. Sie sollten in der Lage sein, binär zu zählen; z.B. Sie sollten in der Lage sein, Ihnen in Dezimalzahl zu sagen, was 2 ^ 5 oder 2 ^ 10 ist. Sie sollten dich nicht verständnislos anstarren, wenn du mit 2 ^ 16 fragst. Es ist eine besondere Nummer. Sie sollten es wissen.

Ich wurde von dem Stück abgeworfen, das Sie in der Frage zitiert haben; Es klang, als ob ein Kandidat in der Lage sein sollte, seine Bedeutung zu beschreiben, aber im Zusammenhang sagt er, dass Kandidaten auf Anhieb wissen sollten, was die Dezimalumrechnung von 2)16 ist.

Die Bedeutung davon ist, dass, da wir Menschen immer noch Dezimalzahlen zum Zählen verwenden, insbesondere in unseren Köpfen (in den meisten Fällen), wir müssen die groben Kapazitäten der gemeinsamen Byteblöcke kennen, die wir für die Speicherung verwenden, Speicher oder sogar Zeichenkodierung. Da ein Byte 8 Bit umfasst, sind die häufigsten 8, 16, 24, 32 und 64.

Zur Zeit würde ich 2 sagen32 ist die am häufigsten vorkommende Kapazität, mit der sich ein Entwickler befasst. Ich bin misstrauisch gegenüber Entwicklern, die das nicht wissen 232 beträgt ungefähr 4 Milliarden (maximaler Wert von ~ 2 Milliarden, wenn signiert), da dies bedeutet, dass sie sich nie die Mühe gemacht haben, ungefähr herauszufinden, wie viele Datensätze in ihren Datenbanken gespeichert werden können, die 32-Bit-ints für Primärschlüssel verwenden oder wenn alter Code, der 32-Bit-ints für IDs, Datumsangaben usw. verwendet, auf 64-Bit umgestaltet werden muss.1

216 ist die Gesamtkapazität des Java short. (Gesamtzahl zwischen -2fünfzehn und 2fünfzehn-1)

Ein Entwickler sollte auswendig wissen, was 8-Bit ist. Unter den vielen gebräuchlichen Verwendungen ist ASCII Zeichencodierung.

Ich würde nicht erwarten, dass ein Programmierer 2 kennt14 oder 218 überhaupt, aber ich würde wahrscheinlich erwarten, dass sie 2 wissen16 da es sich um eine sehr häufig vorkommende Nummer handelt, die kurz genug ist (65536), um sich leicht an die vollständige Nummer zu erinnern.


1: Wenn Sie in den Bestenlisten von Call of Duty: MW2 oder iPhone Game Center stöbern, sehen Sie häufig Betrüger an der Spitze mit hohen Punktzahlen von 2.147.483.647, was 2 entspricht31-1, der Maximalwert einer vorzeichenbehafteten 232 ganze Zahl.

58
Nicole

Der einzige Grund, den ich in Bezug auf 2 sehen kann16 als "speziell" ist, weil es eine mehr als die höchste Ganzzahl ist, die Sie in einem einzelnen Register auf einem 16-Bit-Betriebssystem speichern können.

Ebenso können Sie dieselbe Logik auf 2 anwenden32 und 32-Bit-Betriebssysteme.

Ich müsste mehr Kontext für die Frage kennen, bevor ich sagen kann, ob es sich um ein bedeutendes Stück Wissen handelt oder nicht.

3
ChrisF