Domanda:
Quale vantaggio ha il sistema numerico esadecimale rispetto al sistema decimale in The Martian?
Ahmad
2016-01-04 17:27:46 UTC
view on stackexchange narkive permalink

In The Martian , apprendiamo che Mark comunica con la NASA usando il Pathfinder abbandonato del 1996.

All'inizio usa un sistema SI / NO per comunicare poi sceglie l'esadecimale sistema per comunicare caratteri in codice ASCII.

So che è più facile dividere un cerchio in 16 fette, senza bisogno di uno strumento di misurazione dell'angolo (22,5 gradi per fetta). Ma il sistema decimale (36 gradi per fetta) non sarebbe più conveniente sia per lui che per la NASA, anche se non disegna 10 fette perfette?

Voglio dire, non ci sarebbe più spazio per errore nel ruotare le telecamere verso la cifra sbagliata con sistema esadecimale, rispetto a quanto sarebbe per il decimale, vista la dimensione di ogni fetta?

Che vantaggio offre il sistema esadecimale rispetto al sistema decimale?

Non ricordo perfettamente il libro, o se ci stava pensando prima di impostare il sistema esadecimale, ma alla fine avere l'esagono ha permesso loro di inviargli programmi compilati, giusto?
@ToddWilcox - Sì. La citazione dal libro è "* Dovremo parlare più velocemente delle domande sì / no ogni mezz'ora. La fotocamera può ruotare di 360 gradi e ho molte parti dell'antenna. È ora di fare un alfabeto. Ma non posso usa solo le lettere dalla A alla Z. Ventisei lettere più la mia scheda della domanda sarebbero ventisette carte attorno al lander. ** Ciascuna otterrebbe solo 13 gradi di arco. Anche se JPL punti perfettamente la telecamera, ci sono buone probabilità Non saprò quale lettera intendessero. "***
* "Quindi dovrò usare ASCII. È così che i computer gestiscono i caratteri. Ogni carattere ha un codice numerico compreso tra 0 e 255. I valori compresi tra 0 e 255 possono essere espressi come 2 cifre esadecimali. Fornendomi coppie di cifre esadecimali, può inviare qualsiasi carattere a loro piace, inclusi numeri, punteggiatura, ecc. Come faccio a sapere quali valori vanno con quali caratteri? Perché il laptop di Johanssen è una ricchezza di informazioni. Sapevo che avrebbe avuto una tabella ASCII da qualche parte. Tutti i fanatici del computer fare."*
"* Devo guardare la telecamera quando spiega le cose. È mezzo byte alla volta. Quindi guardo un paio di numeri, poi li cerco su un cheat sheet ASCII che ho fatto. Quella è una lettera. Non lo so. Non voglio dimenticare le lettere, quindi le raschio nella sporcizia con una bacchetta. Il processo di cercare una lettera e raschiarla nella sporcizia richiede un paio di secondi. A volte, quando guardo indietro verso la fotocamera, un numero. Di solito riesco a indovinarlo dal contesto, ma altre volte mi manca semplicemente. * ".
@Richard, correlati? Duplicato esatto se me lo chiedi. Inoltre, le citazioni che elenchi sono descritte bene anche nel film stesso con l'eccezione di lui che usa carta e matita piuttosto che grattarsi per terra.
Sette risposte:
cde
2016-01-04 18:12:21 UTC
view on stackexchange narkive permalink

In primo luogo, il fatto che i gradi siano troppo stretti non è un vantaggio. Il bastone che usa per i marcatori di 22 gradi fornisce la precisione, e un cerchio più ampio compenserebbe le sezioni più piccole di 13 gradi. E il Pathfinder Lander (ribattezzato Carl Sagan Memorial Station ) IMP (Imager for Mars Pathfinder) sarebbe assolutamente in grado di abbinare accuratamente qualsiasi grado arbitrario di rotazione. Un Servo di qualità può avere una precisione di posizione nel range inferiore al grado!

Detto questo, il motivo principale per cui Mark utilizza Hexadecimal è che ha bisogno di un modo di comunicare con la NASA che qualcuno conoscerà, senza avere il lusso di poter comunicare con loro come. È un problema con la gallina o l'uovo. Non esiste una lingua standard in base 10 impostata. Ma l'esadecimale è usato ovunque nei computer e, per fortuna, uno degli altri astronauti aveva un tavolo sul proprio laptop che Mark poteva usare. Senza quel tavolo, avrebbe dovuto creare qualcosa dal nulla e sperare di poter rispondere in maniera ragionevole. Da ASCII a esadecimale era un protocollo già stabilito che entrambi potevano facilmente utilizzare senza dover creare qualcosa da zero, e la Tabella lo forniva.

Mark to Camera: immaginavo che uno di voi tenesse una tabella ASCII in giro. E avevo ragione. Signore e signori, vi presento la super nerd Beth Johanssen.

Seguita da un ingegnere senza nome che la comprende immediatamente.

Ingegnere: so dove sta andando con questo.

Qualsiasi assurdità sul non essere in grado di inviare numeri o punteggiatura utilizzando una notazione decimale è ridicola, poiché sia ​​i numeri che la punteggiatura possono essere enunciati e Mark e gli ingegneri della NASA potrebbero risolvere mano corta per evitare di dover pronunciare parole più lunghe.

Ovviamente la rappresentazione del film è abbastanza non realistica. Perché un ingegnere dovrebbe preoccuparsi di una tabella di moltiplicazione relativamente difficile da leggere invece della tabella lineare molto più comune, che tende ad avere Hex, Octo, Decimal e AlphaNumeric fianco a fianco. Perché preoccuparsi di un punto interrogativo quando esadecimale ha un punto interrogativo (0x63) E non si preoccupano nemmeno di usare la punteggiatura quando gli inviano qualcosa. Non lo fecero non utilizzare uno spazio, lasciando a Mark il compito di capire cosa intendono per contesto.

I commenti non sono per discussioni estese; questa conversazione è stata [spostata in chat] (http://chat.stackexchange.com/rooms/52467/discussion-on-answer-by-cde-what-advantage-does-the-hexadecimal-numeric-system-h) .
Ahmad
2016-01-04 18:11:23 UTC
view on stackexchange narkive permalink

Dopo aver letto una risposta alla domanda esatta su Science Fiction & Fantasy Stack Exchange (come indicato da Richard), è diventato molto chiaro perché l'esadecimale è il sistema migliore con cui comunicare.

Il motivo ha poco a che fare con il numero di segmenti nel cerchio, ma principalmente con il protocollo di comunicazione concordato.

Vedi, usare un sistema decimale significa che ogni carattere in Ascii richiederebbe 3 cifre per rappresentare. Mentre esadecimale può rappresentare qualsiasi carattere in 2 cifre.

Inoltre, l'esadecimale renderà più facile distinguere e decifrare rispetto al decimale.

Considera la seguente sequenza di decimali: 072101108108111

Quanto sopra sta per:

  072 -> H101 -> e108 -> l108 -> l111 -> o  

ma potrebbe essere facilmente confuso di:

  007 ->? 210 -> "110 -> n810 ->? 811 ->? 1 ->?   

, mentre in esadecimale quella sequenza sarebbe: 48656c6c6f

Prima di tutto, il numero di cifre a giù di un terzo e il secondo, il margine di errore è notevolmente ridotto.

Non ha senso. Dovresti azzerare la notazione decimale proprio come faresti con esadecimale.
Come perché avrebbe confuso o ripetuto uno zero all'inizio? Non potrebbe confondere o ripetere altrettanto facilmente il 4 all'inizio e ottenere 44,86,56, c6, c6, f?
@cde No, è perfettamente ragionevole. Per inviare una singola lettera in base10 occorre ceil (log_10 (128)) = 3 trasmissioni separate (piuttosto ovvio: ogni singola lettera deve essere trasferita). Se usi una base maggiore di 11 puoi ridurla piacevolmente a 2 trasmissioni richieste. O fondamentalmente sì, dovresti azzerare ogni valore decimale, il che significherebbe il 50% in più di trasmissioni per lo stesso risultato.
Il throughput di @voo non era davvero la preoccupazione di Mark. Non è stato menzionato nel libro o nel film. La differenza pratica sarebbe stata di pochi secondi per messaggio, una differenza a misura d'uomo che non avrebbe avuto importanza.
La velocità effettiva di @cde è assolutamente una preoccupazione. C'è una scena nel libro che mostra Mark che decifra i messaggi perché la NASA omette lo spazio e alcune consonanti per accelerare la comunicazione. E anche se non avesse importanza, nessun ingegnere degno di questo nome progetterebbe mai un sistema che è il 50% meno efficiente di quanto potrebbe essere senza alcun guadagno (o vorrebbe rimanere al di fuori del 50% più a lungo senza una buona ragione)
@cde La differenza non è di pochi secondi per messaggio, ma di pochi secondi per * carattere *. È un enorme successo di larghezza di banda. Il 50% in più non è uno scherzo. Hex è comunque la scelta predefinita per ASCII. Fare un uso efficiente della larghezza di banda orribilmente limitata era assolutamente una preoccupazione. IIRC il suo primo pensiero furono 26 lettere intorno al rover, ma temeva che sarebbero state abbastanza vicine per l'ambiguità. Quel ragazzo è un ingegnere. Personalmente mi chiedo se la NASA non sia in grado di controllare il beccheggio della telecamera e l'imbardata. Cosa ti suggerisce questa domanda?
@EdPlunkett `La telecamera è completamente controllabile sia in elevazione che in movimento da lato a lato (azimut) da motori passo-passo con ingranaggi, che forniscono un campo di 178 gradi in azimut e da +83 a -72 gradi in elevazione` quindi sì.
@cde Se puoi scegliere una carta in base all'azimut, puoi distinguere tra 3 per carta impostando la telecamera a +83 gradi di elevazione, 0 gradi di elevazione, -72 gradi di elevazione. 16 * 3 == 48, molto spazio per [0-9a-z]. Non c'è bisogno di perdere tempo a decodificare ASCII. Quando inviano byte in esadecimale per la patch del sistema operativo, 16 * 3 esprime facilmente [0-9a-f]. Preferisco migliorare la codifica una volta che sprecare ore a trascrivere caratteri extra e decodificare ASCII.
RonaldB
2016-01-04 21:25:29 UTC
view on stackexchange narkive permalink

Il sistema esadecimale userebbe solo 2 "byte" per carattere. Con il sistema decimale potrebbero esserci lettere o simboli che richiedono 3 "byte" per carattere. Se vuoi evitare confusione e aggiungere uno 0 davanti a caratteri che richiedono 2 "byte", aggiungi effettivamente il 50% alla comunicazione rispetto al sistema esadecimale.

Inoltre, poiché Johanssen ha una tabella ASCII che stabilisce intorno, è probabile che contenga entrambi i valori decimale, ottale ed esadecimale per ogni carattere. Ciò semplifica l'utilizzo di un sistema di comunicazione consolidato.

Non utilizzare il termine "byte" in questo contesto; implora confusione.
No, non l'ha fatto. La tabella che Mark ha trovato aveva solo sette bit binari ed esadecimali, nessuna notazione decimale o ottale. E sembrava stupido
Un valore a 4 bit è chiamato "nyble" (o nibble o nybble). Un byte è due nyble. I nerd adorano il loro gioco di parole.
Il sistema esadecimale utilizza ** mezzo byte ** per carattere, poiché un singolo carattere esadecimale può essere rappresentato utilizzando ** 4 bit ** (e ** 1 byte = 8 bit **). Un carattere ASCII, composto da 2 caratteri esadecimali, ha una dimensione di esattamente ** 1 byte **. Affermi che un carattere esadecimale utilizza 2 byte, che è quattro volte più della realtà.
Ho affermato che il carattere esadecimale utilizza 2 "byte", non 2 byte. Come ha affermato Russell nel primo commento, per evitare confusione, non avrei dovuto usare byte, ma invece sgranocchiare (grazie Persixty).
Mohair
2016-01-05 06:13:03 UTC
view on stackexchange narkive permalink

Gli errori nello stream sono anche molto più evidenti con esadecimale che con decimale. Ad esempio, se ottieni il seguente flusso di caratteri, sai che qualcosa non va:

141424344...

I numeri rientrano nell'intervallo esadecimale 30 -39, le lettere maiuscole sono 41-5A, le minuscole sono 61-7A. Lo spazio è 20. Se ottieni una sequenza di due caratteri che non inizia con 3, 4, 5, 6 o 7 o non è "20", allora sai che la sequenza ha un errore.

Ma se sposti la sequenza in avanti di un carattere (ignora il primo "1"), ha di nuovo senso: "ABC". Puoi presumere che il primo carattere sia stato alterato durante la trasmissione e sia stato perso, ma il resto della trasmissione è leggibile. Sarebbe molto più difficile farlo con i decimali.

Il decimale sarebbe più semplice. Se il primo carattere di 3 non è 0, 1 o 2, qualcosa è andato storto. Inoltre non hanno usato il carattere spazio o qualsiasi altra punteggiatura.
keshlam
2016-01-05 03:07:00 UTC
view on stackexchange narkive permalink

16 posizioni sono molto più facili da leggere per un essere umano a colpo d'occhio rispetto a 10. Una rosa dei venti è un sistema a 16 posizioni (N, NNE NE, ENE ...) Ora prova a pensare a un cerchio comunemente usato diviso in decimi. Non ce ne sono molti, e non siamo così abituati a leggerli.

C'è un vantaggio più sottile in hex ascii: il bit più alto non verrà mai impostato. Se vedi una cifra esadecimale maggiore di 7, deve essere la seconda cifra del carattere. Questo ti dà un modo rapido per rendersi conto che hai perso una cifra durante la trascrizione, poiché metà delle cifre del secondo nybble sarà 7 o più.

Ma, sì, è principalmente una questione di "noi geek sappiamo già un codice adatto; molti di noi potrebbero ricrearne la maggior parte dalla memoria., sarà davvero facile da gestire per le macchine ... perché no. "

Beh ... tecnicamente, nel film (e nel libro) ci sono 17 posizioni ... non sono sicuro di quante meno posizioni siano ** più ** difficili di più posizioni ... Sicuramente quattro è più facile di 8 è più facile di 16 ...
Meno è più facile da leggere ma richiede più passaggi per inviare le stesse informazioni. È un compromesso cercare di trovare l'equilibrio tra concisione e resistenza all'errore (dove quest'ultima include anche la fatica umana).
Vale la pena notare che Mark regolarmente "lascia cadere" alcune delle cifre quando le trascrive dalla sua memoria sul terreno?
@Richard: Sì. Progettare attorno al componente meno affidabile: l'uomo.
FlashCactus
2016-01-05 05:50:41 UTC
view on stackexchange narkive permalink

Come è stato detto nella maggior parte delle altre risposte, i numeri esadecimali (e, più in generale, in base 2 ^ n) sono LO standard in tutto ciò che riguarda i computer.

Ma c'è un'altra ragione pratica: quando si progetta un sistema di comunicazione che coinvolge gli esseri umani, si vuole massimizzare il rendimento riducendo al minimo la possibilità di errore umano. E in termini di errore umano, la notazione esadecimale è molto più conveniente quando si converte in ASCII, perché poiché ogni carattere è lungo un byte, in è rappresentato precisamente da 2 cifre esadecimali. Per confronto, in decimale un byte sarebbe di circa 2,408 cifre per byte nel caso di streaming continuo (che aumenterebbe notevolmente l'errore umano), o 3 quando si codifica ogni carattere separatamente (che diminuisce il throughput mentre aumenta ancora la probabilità di errore, come si ha per poi convertire le cifre in un numero in seguito e abbinare i numeri a una tabella lineare invece di utilizzare la più naturale tabella ASCII 16x16 dove la prima cifra è una coordinata e la seconda cifra l'altra). Inoltre, questa corrispondenza perfetta elimina la questione di quale modalità di trasmissione utilizzare (continua o per carattere).

Lo standard era ottale, quando le lunghezze di parole e byte erano più variabili ... ma una volta bloccati in byte a 8 bit, esadecimale ha preso il sopravvento.
ScienceFictionFan
2016-01-26 08:26:19 UTC
view on stackexchange narkive permalink

Tutto ciò va bene, ma per favore dimmi come non sarebbe più semplice trascriverlo. È quello a cui ho pensato quando ha iniziato a lavorarci sopra nel film: 1. Utilizzando i numeri 5,4,3,2,1 ... crea la tua tabella in stile "ASCII" con 52 lettere, 20 cifre, punteggiatura e spazio richiesti. Hai 120 combinazioni proprio lì se non sbaglio. Quindi 11111 potrebbe essere A. 11112 potrebbe essere B. Punta su un numero e fai una pausa di 2 secondi, quindi ruota la telecamera di 360 gradi e quindi punta al numero successivo per garantire che le cifre ripetute vengano riconosciute. Se la fotocamera ha funzionalità di panoramica verticale, spostala verso l'alto e poi verso il basso per tutti gli spazi. Questo ripristinerebbe ogni parola almeno per aiutare con le lettere mancate.

Quindi ho solo bisogno di 5 segni per indicare quale è il modo più facile da seguire rispetto a 16 o altro. Inoltre ho più "compressione" quindi trasmissioni più veloci.

Scrivilo su un cartello e lascia che scattino una foto delle tue istruzioni. Cosa mi sto perdendo?

Quello che ti manca è che suggerisci di inventare una lingua completamente nuova, quindi, senza l'uso di alcuna lingua, insegnare quella lingua ad altri, come soluzione più semplice rispetto all'utilizzo di una lingua standard consolidata. Inoltre, poiché devi interrompere e inviare distintamente ogni cifra, stai parlando di utilizzare 5 cifre per ogni lettera, invece di due, il che significa che hai rallentato la comunicazione in modo da poter inviare solo il 40% delle informazioni nella stessa quantità di tempo.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...