Warum verwendet Mark im Film Martian Hexadezimal, um mit der NASA zu kommunizieren? Konnten Zahlen von 0 bis 9 nicht ausreichen, um die dem Alphabet entsprechende Zahl anzugeben?
Warum verwendet Mark im Film Martian Hexadezimal, um mit der NASA zu kommunizieren? Konnten Zahlen von 0 bis 9 nicht ausreichen, um die dem Alphabet entsprechende Zahl anzugeben?
Mark wählt ein Hexadezimalsystem hauptsächlich, weil seine eigene Fähigkeit, herauszufinden, auf was der Kamerazeiger zeigt, nicht präzise genug ist. Wenn er alle 26 Buchstaben hat (plus eine Fragekarte plus ein Leerzeichen), besteht eine vernünftige Chance, dass er Schwierigkeiten hat, festzustellen, welchen Buchstaben sie bedeuten. Fügen Sie die Zahlen 0-9 hinzu und es wird noch schlimmer. Darüber hinaus ist es fast unmöglich, mit jeder Geschwindigkeit zu kommunizieren, wenn die Drehung nur um ein paar Grad ausgeschaltet ist.
Im Vergleich dazu Hex-Karten (plus eine zusätzliche Karte zur Anzeige) Eine Frage) erfordert nur 17 Karten, eine weitaus überschaubarere Zahl:
Wir müssen jede halbe Stunde schneller sprechen als Ja / Nein-Fragen. Die Kamera kann sich um 360 Grad drehen, und ich habe viele Antennenteile. Zeit, ein Alphabet zu machen. Aber ich kann nicht nur die Buchstaben A bis Z verwenden. Sechsundzwanzig Buchstaben plus meine Fragekarte wären siebenundzwanzig Karten um den Lander. Jeder würde nur 13 Bogengrade erhalten. Selbst wenn JPL die Kamera perfekt ausrichtet, besteht eine gute Chance, dass ich nicht weiß, welchen Buchstaben sie gemeint haben.
Ich muss also ASCII verwenden. So verwalten Computer Charaktere. Jedes Zeichen hat einen numerischen Code zwischen 0 und 255. Werte zwischen 0 und 255 können als 2 hexadezimale Ziffern ausgedrückt werden. Indem sie mir hexadezimale Ziffernpaare geben, können sie jedes beliebige Zeichen senden, einschließlich Zahlen, Interpunktion usw.
...
Also ich ' Ich mache Karten für 0 bis 9 und A bis F. Das bedeutet, dass 16 Karten um die Kamera gelegt werden, plus die Fragekarte. Siebzehn Karten bedeuten jeweils über 21 Grad. Viel einfacher zu handhaben. Der Marsmensch: Andy Weir sub> sup>
Offensichtlich scheint der Zeiger im Film effizienter zu drehen und anzuhalten (was seine Argumentation ungültig macht), aber das ist Hollywood für Sie.
Hier sind die Hauptgründe, warum ich mir vorstellen kann, Hexadezimal gegenüber einer (ziemlich willkürlichen) Dezimalzahl der Alphabetzuordnung vorzuziehen:
Hexadezimal und die ASCII-Zeichencodes sollten etwas sein, was NASA-Wissenschaftler tun sind vertraut mit, daher ist bei 16 Karten - 0-9 und AF - die Absicht sofort offensichtlich: "Ich möchte mit Hexadezimal kommunizieren."
Es gibt keine Mehrdeutigkeit. Das Zuordnen der 10 Ziffern des Dezimalzahlensystems zu einem Buchstaben des Alphabets würde funktionieren, vorausgesetzt, Sie möchten nur die Buchstaben des Alphabets verwenden. In einem Gespräch zwischen der NASA und einem auf dem Mars gestrandeten Astronauten wäre es wahrscheinlich nützlich, tatsächliche Zahlen verwenden zu können. Hexadezimal bedeutet, dass jeder Buchstabe des Alphabets, jede Zahl sowie viele Satzzeichen und andere Symbole durch eine zweistellige Zahl eindeutig dargestellt werden können.
Hexadezimal wäre tatsächlich Schneller zu kommunizieren. Wenn Sie zwischen jedem Buchstaben ein Leerzeichen verwenden müssen, sehen Sie zwei Kamerabewegungen für die ersten 9 (oder 10, wenn Sie A bis 0 zuordnen) Buchstaben des Alphabets und drei Bewegungen für den Rest. Hexadezimal sind zwei Kamerabewegungen pro Zeichen.
Er ist kein Informatiker. Es ist nicht trivial, eine neue Methode zu erfinden, um den gesamten gewünschten Text zu übertragen.
Er hätte eine Tabelle mit 100 Einträgen (mit den Werten 00 bis 99) erstellen und jedem ein Zeichen zuweisen können. Aber dann müsste er den Tisch an das NASA-Hauptquartier zurücksenden, und würde sowieso die gleiche Anzahl von Nachrichten benötigen, um einen Charakter zu übertragen! (2 Nachrichten pro Zeichen).
Das einfache Senden von 01-26 zum Codieren von Buchstaben ist nicht sehr gut: Das Codieren von Zahlen würde das Ausschreiben erfordern! Es wird schlimmer, wenn sie ?
oder !
oder kommunizieren müssen.
oder ,
oder #
usw. (unwahrscheinlich, aber möglich)
ASCII wird beiden Seiten bekannt sein. Es ist nicht erforderlich, eine Tabelle zu übertragen. Es enthält einen grundlegenden Zeichensatz, mit dem Sie die meisten technischen Informationen (einschließlich Programmierung) zwischen einer Seite und der anderen übertragen können. Auf der Erde können sie eine Nachricht in einem Texteditor eingeben und in ASCII umcodieren, indem sie nur die Rohbytes der Nachricht betrachten, und müssen dafür keine Software schreiben, die das macht Problem einfach und zuverlässig an ihrem Ende.
Kurz gesagt, es gab bereits eine bekannte Möglichkeit, mit 2 Knabbereien pro Zeichen zu kommunizieren. Die Neuerfindung eines neuen Protokolls ist fehleranfällig und schwieriger. Sobald 1/17 eines Bogens groß genug war, um leicht zu unterscheiden, ist es nicht sehr vorteilhaft, zumindest anfänglich weniger genau zu arbeiten.
Wie bereits erwähnt, treten bei 26 oder 36 oder höher Präzisionsprobleme auf (26 Buchstaben + 10 Zahlen + Leerzeichen + 3 Symbole = 40 oder 9 Bogengrade pro Zeichen). Das Senden von 1 Buchstaben pro Kamerabewegung war also nicht praktikabel. Das Ausführen von 2 Zeichen pro 3 Kamerabewegungen wäre wahrscheinlich machbar, stößt jedoch auf das Problem "Neugestaltung" und Probleme mit der Protokollkommunikation.
Senden Sie währenddessen "ASCII verwenden" und Zeichen mit der Aufschrift 0-9 A-F und a? hat das Problem gelöst.
Ich vermute, dass ein Teil des Grundes darin besteht, dass es dadurch technischer und beeindruckender aussieht.
Theoretisch sollte hexadezimal eine viel höhere Bandbreite zulassen - für jeweils zwei Positionen der Kamera kann 1 Vollbyte mit 255 möglichen Zeichen übertragen werden. Im Gegensatz dazu würde ein Dezimalansatz nur 99 Zeichen zulassen. Es gibt jedoch nichts (woran ich mich erinnern kann), das zeigt, dass die zusätzliche Bandbreite notwendig war oder sogar verwendet wurde.
Das einfachere Dezimalsystem könnte leicht die 26 Großbuchstaben, 26 Kleinbuchstaben, Zahlen und die zugehörige Interpunktion enthalten Markierungen.
Die Verwendung des Hex-Ansatzes basiert auf der ASCII-Tabelle, die normalerweise nur 7 Bit umfasst. Nur 4 Werte (von den vollen 16) der ersten Ziffer werden für druckbare Buchstaben verwendet, wenn Kleinbuchstaben ausgeschlossen sind.
Wenn die zusätzliche Bandbreite nützlich gewesen wäre, hätte man eine Tabelle mit den meisten definiert -verwendete Wörter. Mark hätte leicht eine Liste gebräuchlicher Wörter schreiben und sie der Kamera anzeigen können. Sie hätten die Kommunikationsgeschwindigkeit erheblich erhöhen können, da sie ein Vokabular von 12x16 = 192 Wörtern hätten verwenden können. Xkcd ( https://xkcd.com/1133/) hat uns gezeigt, dass eine sehr vollständige Kommunikation mit nur 1000 Wörtern (10 Bit) möglich ist. 192 schnelle Wörter mit vollständiger Schreibweise von Wörtern, die nicht in der Liste enthalten sind, würden die Kommunikation viel weniger mühsam machen. Es erscheint Mark auch nicht unangemessen, dies herauszufinden und der Erde mitzuteilen. Schon ein paar Wörter würden helfen.
Wenn er mehr Papier und etwas Geduld hätte, wäre es noch besser, dreistellige Hex-Codes zu verwenden - dies würde ihm 4000 Wörter plus das Alphabet geben.
Noch besser wäre es, eine einfache Huffman-Codierung zu verwenden - dh kürzere Codes für häufige Symbole zu verwenden. Er könnte die gebräuchlichsten Wörter / Buchstaben in die erste Ziffer einfügen, zusammen mit speziellen Codes für zweistellige oder dreistellige Wörter. Dies würde eine unterschiedliche Nachrichtenlänge ergeben, wäre jedoch immer noch sehr gut von Hand zu dekodieren.
Der beste Ansatz wäre jedoch, mit dem Computer einen optimal komprimierten Datensatz zu erarbeiten und diesen dann einfach mit dem gesamten 8-Bit-Bereich zu übertragen. Dies würde eine etwas knifflige Programmierung erfordern, die wahrscheinlich über ihn hinausgehen würde - es wäre nicht effizient, die Standardkomprimierungsbibliotheken zu verwenden, da ein fester Wörterbuchansatz besser wäre. Auf diese Weise könnte er sich der theoretischen Grenze von 1 Bit pro Zeichen oder 4 Zeichen für jede Positionierung der Kamera nähern.
Aber es wäre wahrscheinlich nicht so dramatisch für die Leser / Zuschauer.
(Ich mag Teile einiger anderer Antworten und Kommentare, aber sie haben alle ihre Probleme, also geht es weiter ...)
"tl; dr"? Nur das Fett für eine übersichtliche Version.
Beachten Sie b>, dass es bei einigen Antworten oder Kommentaren darum geht, "warum nicht jede Zeigerposition direkt übereinstimmt zu einem Symbol - überhaupt kein Code. " Das neuartige Zitat (unten und wie in Richards Antwort) erklärt dies, aber die Frage war einfach "warum nicht Ziffern von 0 bis 9 verwenden", d. H. Dezimal statt hexadezimal i>. Also nehme ich zunächst ASCII als gegeben. B> In einer Endnote werde ich ein wenig über effizientere Schemata für die "Angabe der Zahl, die dem Alphabet entspricht" sagen, um den Fragesteller zu zitieren, da er es wohl meinte ein Code, aber möglicherweise nicht ASCII. (Und vielleicht ist im Film nicht so klar wie im Roman, dass dieser Code verwendet wird. Ich weiß nicht, ich war ein wenig beschwipst, als ich ihn mir ansah. I> )
Antworte zuerst auf den zweiten Teil: Einfach "Ja", das Senden von Codes in den Ziffern 0 bis 9 ist völlig ausreichend. In dem Roman lautet das Zitat (danke an Richard), das erklärt, warum eine begrenzte Anzahl von Symbolen verwendet werden soll:
"Sechsundzwanzig Buchstaben plus meine Fragekarte wären siebenundzwanzig Karten um die Jeder würde nur 13 Grad Bogen bekommen. Selbst wenn JPL die Kamera perfekt ausrichtet, besteht eine gute Chance, dass ich nicht weiß, welchen Buchstaben sie bedeuteten. "
Dies macht es offensichtlich : 0 bis 9 bedeutet weniger Karten, also auch in Ordnung. B>
Für diejenigen, die nicht mathematisch veranlagt sind, scheint es impliziert zu sein, dass hexadezimal etwas Besonderes ist ( wobei die Ziffern A - F 10 - 15 darstellen und die Position einer Ziffer die Potenz (Exponent) von 16 anstelle von 10) in Bezug auf ASCII angibt, wie in diesem anderen Zitat:
"Also muss ich ASCII * verwenden. So verwalten Computer Zeichen. Jedes Zeichen hat einen numerischen Code zwischen 0 und 255 **. Werte zwischen 0 und 255 können als 2 hexadezimale Ziffern ausgedrückt werden. "
Aber nein : ASCII ist nur eine Tabelle, die" abbildet ". eine Zahl zu einem Symbol, so dass diese Zahl genauso leicht die bekanntere Dezimalstelle mit den Ziffern 0 bis 9 sein kann.
Der erste Teil - "Warum hexadezimal?" - wird zumindest im Film nicht beantwortet. Die wahrscheinlich beste Antwort ist eine außerhalb des Universums: Es scheint wie nerdiges wissenschaftliches Zeug, und dieser Film liebt seine nerdigen Wissenschaftler. b> Hey, es hat bei Ron Howard und Tom Hanks funktioniert.
Im Prinzip i> ist es effizienter - weniger Bewegungen des Zeigers - 16 "Ziffern" (Zeiger) zu haben Positionen) als 10. Je mehr desto besser, bis es zu viele unserer Lieblings-Marsmenschen werden, um sie zu unterscheiden. Andere Stapelaustauscher haben in unterschiedlichem Detail und in korrekter Genauigkeit andere Codierungsschemata * beschrieben, die dies, insbesondere für unseren Astro, viel besser nutzen könnten -Botanistische Heldenumstände. Aber @Ghanima und @Peter Davidson sind die aktuellsten Beachten Sie, dass bei Verwendung von ASCII wie in The Martian die mögliche Effizienz von 16 gegenüber 10 Stellen pro Zeigerbewegung größtenteils verschwendet wird. Um genauer zu sagen, wie wenig Unterschied es im tatsächlichen Fall macht: In ASCII sind die Zahlen, die jeweils "Leerzeichen", 0 - 9, A - Z (aber nicht az) und Symbole außer {|} ~ darstellen, weniger als 99, wenn es Ihnen also nichts ausmacht, durch Schreiben in ALLCAPS ein SHOUTY DICK für Ihren MARTIAN BUDDY zu sein, und Sie dem "Umarmen" widerstehen können {{Matt Damon}} er ist bezaubernd!) Sie brauchen nicht mehr Zeigerbewegungen (2) pro Zeichen mit Dezimalzahl als mit Hexadezimalzahl . b>
Endnoten:
* b> Hey Mark, nein, du musst kein ASCII verwenden. Anscheinend können Sie der NASA jede Methode mitteilen, die Sie erfinden und die sie verwenden sollen. Zum Beispiel (immer noch hexadezimal, wenn numerisch gedacht) einer, bei dem die 15 häufigsten Buchstaben jeweils nur durch eine "Ziffer" (eine Bewegung des Zeigers) dargestellt werden, wobei 0 bis F 1 überspringen und die anderen 11 durch die Werte 10 bis 1A. Der Wert '1' wird übersprungen, sodass beim Senden klar ist, dass es sich um die erste Ziffer eines zweistelligen Codewerts handelt.
Wie bei ASCII handelt es sich um ein einfaches Symbolcodierungsschema, jedoch um die große Mehrheit Die Anzahl der gesendeten Briefe dauert halb so lange. Das Senden von Zahlen hat weniger Priorität (es wurde weder in den Romanzitaten noch im Film erwähnt, glaube ich). Selbst in ASCII ist der Codepunkt für jede Ziffer eine zweistellige Zahl. Wenn Sie also viele Ziffern senden möchten, anstatt sie wie in ASCII und / oder einem der zuvor veröffentlichten Kommentare zu codieren, möchten Sie sie als "einfache Zahlen" senden. Wenn ein paar zusätzliche Zeigerpositionen nicht zu viele sind, können Sie auf einfache Weise eine hinzufügen, die bedeutet, dass "was als nächstes kommt, ist eine Zahl" und eine, die bedeutet, "was als nächstes kommt, ist keine Zahl". Dies ohne diese zusätzlichen Positionen zu signalisieren (dh nur Codewerte zu verwenden, bei denen es sich um Zahlendaten handeln könnte), bleibt dem Leser als Übung.
Ausgefallenere Dinge wie die Huffman-Codierung werden von anderen erwähnt, aber hey, Mark ist nur der größte Botaniker auf dem Mars - das kann er den Mathematik- oder Computer-Nerds bei der NASA überlassen.
** [Schiebt die Nerd-Brille wieder auf den Nasenrücken]: Tatsächlich verwendet ASCII nur 0 - 127, nicht 0 - 255.
Angenommen, Sie meinen, warum haben sie nicht einfach ASCII-Code in Dezimalstellen verwendet, anstatt Hex zu verwenden?
Technisch könnten sie haben, ich meine 32 ist das Leerzeichen, 97 ist der Buchstabe 'a', 117 ist 'u' und so weiter.
Technisch gesehen also, Mark Ich hätte einfach "ASCII mit Dezimalstellen" auf sein Board schreiben können, um diese Nachricht als Bild zu senden, und dann nur 11 andere Antennen verwendet, um alle 10 Ziffern von 0 bis 9 und das Fragezeichen darzustellen.
Das hätte ihm einen größeren Bereich für jeden Buchstaben gegeben, ABER die meisten Buchstaben in der ASCII-Tabelle sind dreistellig (auf Basis 10), sodass die Kommunikation etwas länger dauern würde.
Das ist der einzige Grund, warum ich denken kann, dass dies für mich sinnvoll ist. Die Zeit, die sie für die Übermittlung der einzelnen Briefe benötigt hätten, hätte die gesamte Kommunikationszeit verlängert.
Die meisten Referenzdiagramme für ASCII organisieren die Zeichen in einer Tabelle mit 16 Spalten und 16 Zeilen (genau genommen nur 8 Zeilen; oder vielleicht dieses historische Beispiel in 16 Zeilen und 8 Spalten), was es besonders einfach macht, von / zu hexadezimalen Ziffernpaaren zu dekodieren / zu kodieren.
Wie auch immer Sie es in Scheiben schneiden, 17 Karten geben ihm 17 Symbole, seien es Buchstaben oder Zahlen. Der einzige Vorteil von Hexadezimal ist, dass die Symbole für 10 bis 16 in Hexadezimal (A - F) wohl schmaler sind. Wenn der Kartenabstand zählt, gibt es überhaupt keinen Vorteil. Es klingt gut, aber es ist Unsinn.