Question:
Quel avantage le système numérique hexadécimal a-t-il sur le système décimal dans The Martian?
Ahmad
2016-01-04 17:27:46 UTC
view on stackexchange narkive permalink

Dans Le Martien , on apprend que Mark communique avec la NASA en utilisant le Pathfinder abandonné de 1996.

Au début, il utilise un système OUI / NON pour communiquer puis choisit l'hexadécimal système pour communiquer des caractères codés ASCII.

Je sais qu'il est plus facile de diviser un cercle en 16 tranches, sans avoir besoin d'un outil de mesure d'angle (22,5 degrés par tranche). Mais le système décimal (36 degrés par tranche) ne serait-il pas plus pratique pour lui et la NASA, même s'il ne dessine pas 10 tranches parfaites?

Je veux dire, n'y aurait-il pas plus de place pour une erreur de rotation des caméras vers le mauvais chiffre avec le système hexadécimal, que ce serait pour la décimale, étant donné la taille de chaque tranche?

Quel avantage le système hexadécimal offre-t-il que le système décimal ne le fait pas?

Je ne me souviens pas parfaitement du livre, ou s'il y avait pensé avant de mettre en place le système hexadécimal, mais à la fin, avoir l'hexagone leur a permis de lui envoyer des programmes compilés, non?
@ToddWilcox - Oui. La citation du livre est "* Nous devrons parler plus vite que les questions oui / non toutes les demi-heures. La caméra peut pivoter à 360 degrés et j'ai beaucoup de pièces d'antenne. Il est temps de faire un alphabet. Mais je ne peux pas il suffit d'utiliser les lettres A à Z. Vingt-six lettres plus ma carte de question feraient 27 cartes autour de l'atterrisseur. ** Chacune n'obtiendrait que 13 degrés d'arc. Même si JPL pointe parfaitement la caméra, il y a de bonnes chances Je ne sais pas de quelle lettre ils parlaient. "***
* "Je vais donc devoir utiliser ASCII. C'est ainsi que les ordinateurs gèrent les caractères. Chaque caractère a un code numérique compris entre 0 et 255. Les valeurs comprises entre 0 et 255 peuvent être exprimées sous forme de 2 chiffres hexadécimaux. En me donnant des paires de chiffres hexadécimaux, ils peut envoyer n'importe quel caractère de son choix, y compris des chiffres, des signes de ponctuation, etc. Comment savoir quelles valeurs correspondent à quels caractères? Parce que l'ordinateur portable de Johanssen est une mine d'informations. Je savais qu'elle aurait une table ASCII quelque part. Tous les geeks de l'informatique faire."*
"* Je dois regarder la caméra quand elle énonce les choses. C'est un demi-octet à la fois. Donc je regarde une paire de chiffres, puis je les regarde sur une feuille de triche ASCII que j'ai faite. C'est une lettre. Je veux oublier des lettres, alors je les racle dans la saleté avec une baguette. Le processus de recherche d'une lettre et de la gratter dans la saleté prend quelques secondes. Parfois, quand je regarde l'appareil photo, j'ai manqué un nombre. Je peux généralement le deviner à partir du contexte, mais d'autres fois, je passe juste à côté. * ".
Liés à @Richard,? Copie exacte si vous me demandez. En outre, les citations que vous énumérez sont également bien décrites dans le film lui-même, à l'exception de lui utilisant du papier et un crayon plutôt que de se gratter dans la saleté.
Sept réponses:
#1
+17
cde
2016-01-04 18:12:21 UTC
view on stackexchange narkive permalink

Premièrement, le fait que les degrés soient trop étroits n'est pas une option. Le bâton qu'il utilise pour les marqueurs de 22 degrés fournit la précision, et un cercle plus large compenserait les sections plus petites de 13 degrés. Et le Pathfinder Lander (renommé Carl Sagan Memorial Station ) IMP (Imager for Mars Pathfinder) serait absolument capable de correspondre avec précision à n'importe quel degré arbitraire de rotation. Un servo de qualité peut avoir une précision de position dans la plage de sous-degrés!

Cela dit, la principale raison pour laquelle Mark utilise Hexadecimal est qu'il a besoin d'un moyen de communiquer avec la NASA que quelqu'un saura, sans avoir le luxe de pouvoir communiquer avec eux comment. C'est un problème de poulet ou d'oeuf. Il n'y a pas de langue standard de base 10. Mais l'hexadécimal est utilisé partout dans les ordinateurs et, par chance, l'un des autres astronautes avait une table sur son ordinateur portable que Mark pourrait utiliser. Sans cette table, il aurait dû créer quelque chose à partir de rien, et espérer qu'ils pourraient répondre de manière raisonnable. L'ASCII à Hexadécimal était un protocole déjà établi qu'ils pouvaient tous les deux facilement utiliser sans avoir à créer quelque chose à partir de zéro, et le tableau le fournissait.

Mark to Camera: J'ai pensé que l'un de vous gardait une table ASCII traîner. Et j'avais raison. Mesdames et messieurs, je vous donne la super-nerd Beth Johanssen.

Suivi par un ingénieur sans nom qui comprend immédiatement.

Ingénieur: Je sais où il va avec ceci.

Toute absurdité sur le fait de ne pas pouvoir envoyer des nombres ou de la ponctuation en utilisant une notation décimale est ridicule, car les nombres et la ponctuation peuvent être épelés, et les ingénieurs de Mark et de la NASA pourraient travailler main courte pour éviter d'avoir à épeler des mots plus longs.

Bien sûr, la représentation du film n'est pas vraiment réaliste. Pourquoi un ingénieur s'embêterait-il avec une table de multiplication relativement difficile à lire au lieu de la table linéaire beaucoup plus courante, qui a tendance à avoir Hex, Octo, Decimal et AlphaNumeric côte à côte? Pourquoi s'embêter avec un point d'interrogation quand Hexadecimal contient un point d'interrogation (0x63) ET qu'ils ne prennent même pas la peine d'utiliser la ponctuation lorsqu'ils lui envoient quoi que ce soit. Ils ne l'ont pas non plus n'utilisez pas d'espace, laissant Mark comprendre ce qu'ils veulent dire par contexte.

Les commentaires ne sont pas destinés à une discussion approfondie; cette conversation a été [déplacée vers le chat] (http://chat.stackexchange.com/rooms/52467/discussion-on-answer-by-cde-what-advantage-does-the-hexadecimal-numeric-system-h) .
#2
+12
Ahmad
2016-01-04 18:11:23 UTC
view on stackexchange narkive permalink

Après avoir lu une réponse à la question exacte sur la science-fiction & Fantasy Stack Exchange (comme l'a souligné Richard), il est devenu très clair pourquoi l'hexadécimal est le meilleur système pour communiquer.

La raison n'a pas grand-chose à voir avec le nombre de tranches dans le cercle, mais principalement avec le protocole de communication pré-convenu.

Vous voyez, utiliser un système décimal signifie que chaque caractère dans Ascii nécessiterait 3 chiffres pour représenter. Alors que l'hexadécimal peut représenter n'importe quel caractère à 2 chiffres.

De plus, l'hexadécimal le rendra plus facile à distinguer et à déchiffrer que le décimal.

Considérez la séquence de décimales suivante: 072101108108111

Ce qui précède signifie:

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

mais il pourrait facilement se tromper par:

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

Alors qu'en hexadécimal, cette séquence serait: 48656c6c6f

Tout d'abord, le nombre de chiffres a vers le bas d'un tiers, et deuxièmement, la marge d'erreur est réduite dans une large mesure.

Cela n'a pas de sens. Vous mettriez à zéro la notation décimale comme vous le feriez avec hex.
Par exemple, pourquoi confondrait-il ou répéterait-il un zéro au début? Ne pourrait-il pas tout aussi facilement confondre ou répéter le 4 au début et obtenir 44,86,56, c6, c6, f?
@cde Non, c'est parfaitement raisonnable. Pour envoyer une seule lettre en base10, il faut ceil (log_10 (128)) = 3 transmissions distinctes (assez évident: chaque lettre doit être transférée). Si vous utilisez une base supérieure à 11, vous pouvez réduire ce nombre à 2 transmissions requises. Ou fondamentalement, oui, vous devriez mettre à zéro chaque valeur décimale, ce qui signifierait 50% de transmissions supplémentaires pour le même résultat.
Le débit d'@voo n'était pas vraiment la préoccupation de Mark. Cela n'a pas été mentionné dans le livre ou le film. La différence pratique aurait été de quelques secondes par message, une différence d'échelle humaine qui n'aurait pas d'importance.
Le débit d'@cde est absolument un problème. Il y a une scène dans le livre montrant Mark déchiffrant des messages parce que la NASA omet l'espace et certaines consonnes pour accélérer la communication. Et même si cela n'avait pas d'importance, aucun ingénieur digne de ce nom ne concevrait jamais un système 50% moins efficace qu'il ne pourrait l'être sans aucun gain (ou ne voudrait rester à l'extérieur 50% plus longtemps sans raison)
@cde La différence n'est pas de quelques secondes par message, mais de quelques secondes par * caractère *. C'est un énorme succès en termes de bande passante. 50% plus n'est pas une blague. Hex est de toute façon le choix par défaut pour ASCII. Utiliser efficacement la bande passante horriblement limitée était une préoccupation absolue. IIRC a d'abord pensé à 26 lettres autour du rover, mais il craignait qu'elles ne soient suffisamment proches pour éviter toute ambiguïté. Ce type est ingénieur. Personnellement, je me demande si la NASA ne pouvait pas contrôler le tangage de la caméra ainsi que le lacet. Que vous suggère cette question?
@EdPlunkett `La caméra est entièrement contrôlable à la fois en élévation et en mouvement latéral (azimut) par des moteurs pas à pas avec des engrenages, qui fournissent un champ de 178 degrés en azimut et de +83 à -72 degrés en élévation` donc oui.
@cde Si vous pouvez choisir une carte par azimut, vous pouvez en distinguer 3 par carte en réglant la caméra à +83 degrés d'élévation, 0 degré d'élévation, -72 degrés d'élévation. 16 * 3 == 48, beaucoup de place pour [0-9a-z]. Pas besoin de perdre du temps à décoder l'ASCII. Lorsqu'ils envoient des octets en hexadécimal pour le patch du système d'exploitation, 16 * 3 exprime facilement [0-9a-f]. Je préfère améliorer l'encodage une fois que de perdre des heures à transcrire des caractères supplémentaires et à décoder l'ASCII.
#3
+8
RonaldB
2016-01-04 21:25:29 UTC
view on stackexchange narkive permalink

Le système hexadécimal n'utiliserait que 2 "octets" par caractère. Avec le système décimal, il pourrait y avoir des lettres ou des symboles nécessitant 3 "octets" par caractère. Si vous voulez éviter toute confusion et ajouter un 0 devant les caractères nécessitant 2 "octets", vous ajoutez effectivement 50% à la communication par rapport au système hexadécimal.

De plus, puisque Johanssen a une table ASCII autour, il y a de fortes chances qu'il contienne à la fois la valeur décimale, octale et hexadécimale pour chaque caractère. Cela facilite l'utilisation d'un système de communication établi.

N'utilisez pas le terme «octets» dans ce contexte; cela prie pour la confusion.
Non, non. La table Mark trouvée n'avait que sept bits binaires et hexadécimaux, aucune notation décimale ou octale. Et ça avait l'air stupide
Une valeur de 4 bits est appelée «nyble» (ou nibble ou nybble). Un octet correspond à deux nybles. Les nerds aiment leur jeu de mots.
Le système hexadécimal utilise ** un demi-octet ** par caractère, car un seul caractère hexadécimal peut être représenté en utilisant ** 4 bits ** (et ** 1 octet = 8 bits **). Un caractère ASCII, composé de 2 caractères hexadécimaux, a une taille d'exactement ** 1 octet **. Vous déclarez qu'un caractère hexadécimal utilise 2 octets, ce qui est quatre fois plus que la réalité.
J'ai déclaré que le caractère hexadécimal utilise 2 "octets", pas 2 octets. Comme Russell l'a déclaré dans le premier commentaire, pour éviter toute confusion, je n'aurais pas dû utiliser byte, mais plutôt grignoter (merci Persixty).
#4
+3
Mohair
2016-01-05 06:13:03 UTC
view on stackexchange narkive permalink

Les erreurs dans le flux sont également beaucoup plus évidentes avec hexadécimal qu'avec décimal. Par exemple, si vous obtenez le flux de caractères suivant, vous savez que quelque chose ne va pas:

141424344...

Les nombres tombent dans la plage hexadécimale 30 -39, les lettres majuscules sont 41-5A, les minuscules sont 61-7A. L'espace est de 20. Si vous obtenez une séquence de deux caractères qui ne commence pas par 3, 4, 5, 6 ou 7, ou n'est pas "20", vous savez que la séquence comporte une erreur.

Mais si vous déplacez cette séquence d'un caractère vers l'avant (ignorez le premier "1"), cela a encore un sens: "ABC". Vous pouvez supposer que le premier caractère a été brouillé lors de la transmission et est perdu, mais le reste de la transmission est lisible. Ce serait beaucoup plus difficile de faire cela avec des décimales.

La décimale serait plus simple. Si le premier caractère de 3 n'est pas 0, 1 ou 2, alors quelque chose s'est mal passé. De plus, ils n'ont pas utilisé le caractère espace, ni aucune autre ponctuation.
#5
+1
keshlam
2016-01-05 03:07:00 UTC
view on stackexchange narkive permalink

16 positions sont beaucoup plus faciles à lire pour un humain que 10 ne le seraient. Une rose des vents est un système à 16 positions (N, NNE NE, ENE ...). Maintenant, essayez de penser à un cercle couramment utilisé divisé en dixièmes. Il n'y en a vraiment pas beaucoup, et nous ne sommes pas aussi habitués à les lire.

Il y a un avantage plus subtil à hex ascii: le bit le plus élevé ne sera jamais défini. Si vous voyez un chiffre hexadécimal supérieur à 7, il doit être le deuxième chiffre du caractère. Cela vous donne un moyen rapide de réaliser que vous avez laissé tomber un chiffre lors de la transcription, car la moitié des chiffres du deuxième nybble seront 7 ou plus.

Mais, oui, c'est surtout une question de "nous les geeks connaissons déjà un code approprié; beaucoup d'entre nous pourraient en recréer la plus grande partie de la mémoire., ce sera vraiment facile à gérer pour les machines ... pourquoi pas. "

Eh bien ... techniquement, dans le film (et le livre), il y a 17 positions ... Je ne suis pas sûr que moins de positions soit ** plus ** difficile que plus de positions ... Sûrement quatre est plus facile que 8 est plus facile que 16 ...
Moins est plus facile à lire, mais prend plus de mesures pour envoyer les mêmes informations. C'est un compromis d'essayer de trouver l'équilibre entre la concision et la résistance aux erreurs (où cette dernière inclut également la fatigue humaine).
Est-il intéressant de noter que Mark «laisse tomber» régulièrement certains des chiffres lorsqu'il les transcrit de sa mémoire sur le sol?
@Richard: Oui. Conception autour du composant le moins fiable - l'humain.
#6
+1
FlashCactus
2016-01-05 05:50:41 UTC
view on stackexchange narkive permalink

Comme cela a été dit dans la plupart des autres réponses, les nombres hexadécimaux (et, plus généralement, base-2 ^ n) sont LA norme dans tout ce qui concerne l'ordinateur.

Mais il y a une autre raison pratique: lors de la conception d'un système de communication impliquant des humains, on veut maximiser le débit tout en minimisant la possibilité d'erreur humaine. Et en termes d'erreur humaine, la notation hexadécimale est beaucoup plus pratique lors de la conversion en ASCII, car comme chaque caractère mesure un octet, in est représenté par précisément 2 chiffres hexadécimaux. À titre de comparaison, un octet en décimal serait d'environ 2,408 chiffres par octet dans le cas de la diffusion continue (ce qui augmenterait considérablement l'erreur humaine), ou 3 lors de l'encodage de chaque caractère séparément (ce qui diminue le débit tout en augmentant toujours la probabilité d'erreur, pour ensuite convertir les chiffres en nombre par la suite et faire correspondre les nombres à une table linéaire au lieu d'utiliser la table ASCII 16x16 plus naturelle où le premier chiffre est une coordonnée et le deuxième chiffre l'autre). De plus, cette correspondance parfaite élimine la question de savoir quel mode de transmission utiliser (en continu ou par caractère).

Le standard était autrefois octal, à l'époque où les longueurs de mot et d'octet étaient plus variables ... mais une fois que nous nous sommes verrouillés dans des octets de 8 bits, hex a pris le dessus.
#7
  0
ScienceFictionFan
2016-01-26 08:26:19 UTC
view on stackexchange narkive permalink

Tout cela est bien beau mais dites-moi comment ce ne serait pas plus simple à transcrire. C'est ce à quoi j'ai pensé quand il a commencé à travailler dessus dans le film: 1. En utilisant les nombres 5,4,3,2,1 ... créez votre propre tableau de style "ASCII" avec 52 lettres, 20 chiffres, ponctuation et espace requis. Vous avez 120 combinaisons juste là si je ne me trompe pas. Donc 11111 pourrait être A. 11112 pourrait être B. Pointez sur un nombre et faites une pause de 2 secondes, puis faites pivoter la caméra de 360 ​​degrés, puis pointez sur le numéro suivant pour vous assurer que les chiffres qui se répètent sont reconnus. Si la caméra a des capacités de panoramique vertical, faites-la monter puis descendre pour tous les espaces. Cela réinitialiserait au moins chaque mot pour aider avec les lettres manquées.

Je n'ai donc besoin que de 5 signes pour indiquer ce qui est beaucoup plus facile à suivre que 16 ou autre. De plus, j'ai plus de "compression" donc des transmissions plus rapides.

Écrivez-le sur un panneau et laissez-les prendre une photo de vos instructions. Qu'est-ce que je rate?

Ce qui vous manque, c'est que vous suggérez d'inventer une langue complètement nouvelle, puis, sans utiliser aucune langue, d'enseigner cette langue à d'autres, comme une solution plus simple que d'utiliser une langue standard établie. De plus, comme vous devez arrêter et envoyer chaque chiffre distinctement, vous parlez d'utiliser 5 chiffres pour chaque lettre, au lieu de deux, ce qui signifie que vous avez ralenti la communication afin de ne pouvoir envoyer que 40% des informations dans le même montant. de temps.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...