Movies & TV Stack Exchange is a question and answer site for movie and tv enthusiasts. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In The Martian, we learn that Mark communicates with NASA using the abandoned Pathfinder from 1996.

At first he uses a YES/NO system to communicate then chooses the hexadecimal system to communicate ASCII coded characters.

I know it is easier to divide a circle to 16 slices, without the need of an angle measuring tool (22.5 degrees per slice). But, wouldn't the decimal system (36 degrees per slice) be more convenient for both him and NASA, even if he does not draw 10 perfect slices?

I mean, wouldn't there be more room for error in rotating the cameras towards the wrong digit with hexadecimal system, than it would be for the decimal, given the size of each slice?

What advantage does the hexadecimal system provide that the decimal system does not?

share|improve this question
7  
Related question on SFF:SE - In “The Martian” why would he use hex over base 10 values for the alphabet? – user7812 Jan 4 at 11:42
    
I don't remember the book perfectly, or whether he was thinking of this before he set up the hex system, but in the end having the hex made it possible for them to send him compiled programs, right? – Todd Wilcox Jan 4 at 14:44
    
@ToddWilcox - Yes. The quote from the book is "We’ll need to talk faster than yes/no questions every half hour. The camera can rotate 360 degrees, and I have plenty of antenna parts. Time to make an alphabet. But I can’t just use the letters A through Z. Twenty-six letters plus my question card would be twenty-seven cards around the lander. Each one would only get 13 degrees of arc. Even if JPL points the camera perfectly, there’s a good chance I won’t know which letter they meant." – user7812 Jan 5 at 0:24
1  
"So I’ll have to use ASCII. That’s how computers manage characters. Each character has a numerical code between 0 and 255. Values between 0 and 255 can be expressed as 2 hexadecimal digits. By giving me pairs of hex digits, they can send any character they like, including numbers, punctuation, etc. How do I know which values go with which characters? Because Johanssen’s laptop is a wealth of information. I knew she’d have an ASCII table in there somewhere. All computer geeks do." – user7812 Jan 5 at 0:24
    
"I have to be watching the camera when it spells things out. It’s half a byte at a time. So I watch a pair of numbers, then look them up on an ASCII cheat sheet I made. That’s one letter. I don’t want to forget any letters, so I scrape them into the dirt with a rod. The process of looking up a letter and scraping it in the dirt takes a couple of seconds. Sometimes when I look back at the camera, I’ve missed a number. I can usually guess it from context, but other times I just miss out.". – user7812 Jan 5 at 0:26

First, the degrees being too narrow is a non-starter. The stick he uses for the 22 degree markers provides the accuracy, and a wider circle would compensate for the smaller, 13 degree sections. And the Pathfinder Lander (renamed the Carl Sagan Memorial Station) IMP (Imager for Mars Pathfinder) would absolutely be able to accurately match any arbitrary degree of rotation. A quality Servo can have a position accuracy in the sub-degree range!

That said, the main reason that Mark uses Hexadecimal is that he needs a way of communicating with NASA that someone will know, without having the luxury of being able to communicate with them how. It's a Chicken or Egg problem. There is no standard base-10 language set. But Hexadecimal is used throughout computers everywhere, and by luck one of the other astronauts had a table on their laptop that Mark could use. Without that table, he would have had to create something from thin air, and hope that they could reply back in a reasonable manner. The ASCII to Hexadecimal was an already established protocol that they could both easily use without having to make something up from scratch, and the Table provided it.

Mark to Camera: I figured one of you guys kept an ASCII table lying around. And I was right. Ladies and gentlemen, I give you super-nerd Beth Johanssen.

Followed by a nameless Engineer immediately understanding it.

Engineer: I know where he's going with this.

Any nonsense about not being able to send numbers or punctuation using a decimal notation is ridiculous, as both numbers and punctuation can be spelled out, and Mark and NASA engineers could work out short hand to prevent needing to spell out longer words.

Of course the Movie Portrayal is fairly non-realistic. Why would any engineer bother with a relatively hard to read multiplication table instead of the much more common linear table, which tend to have Hex, Octo, Decimal, and AlphaNumeric side by side. Why bother with a Question Mark when Hexadecimal has a Question Mark in it (0x63) AND they don't even bother to use punctuation when they send him anything. They also didn't use a space, leaving Mark to figure out what they mean by context.

share|improve this answer
9  
I'm confused by this sentence: "There is no standard base-10 language set". ASCII (or Unicode for that matter) can be used in any base, it's just a mapping of numbers to glyphs. The base in which those numbers are expressed is irrelevant to the mapping itself. – Todd Wilcox Jan 4 at 14:42
2  
@Joshua - hex digits are standardized in computer programming. 0-9, then A is the digit after 9, and that goes through F. so F in hex is 15 in decimal, 16 total digits including zero. No need for either one to make a "decision", it's already a standard in computer science. If you've ever worked with colors on a computer such as FF0000 for red you're writing hex code with each set of 2 digits representing red, green, and blue. FF would be the max for red, then zeros for the rest...so FF0000 is pure red. – Jimbo Jonny Jan 4 at 17:50
1  
Doesn't really solve the "why" part. ASCII tables have decimal numbers on them... capital 'A' is decimal '65', or hex '41'... – SnakeDoc Jan 4 at 19:22
3  
"ASCII to Hexadecimal was an already established protocol that they could both easily use without having to make something up from scratch" - and so could they if they used base10, base15 or really any base at least up to base36 (afterwards there isn't any clear standardized pattern). ASCII is just a mapping of numbers to characters. How you encode the numbers is completely orthogonal to ASCII. Now Hex is the obvious choice from a practical point of view, but really anything over base11 would give the same advantages (meaning only 2 letters necessary per char). – Voo Jan 4 at 19:24
2  
Oh, please... spelling out numbers is absurd... When he's editing the code in the Rover, he needs tons of letters and numbers for the code changes... that would be extremely pedantic to "spell out". – Catija Jan 4 at 22:57
up vote 12 down vote accepted

After reading an answer to the exact question on Science Fiction & Fantasy Stack Exchange (as pointed by Richard), it became very clear why hexadecimal is the better system to communicate with.

The reason has little to do with the number of slices in the circle, but mainly with the pre-agreed upon protocol of communication.

You see, using a decimal system means that each character in Ascii would require 3 digits to represent. While hexadecimal can represent any character in 2 digits.

Also, the hexadecimal will make it easier to distinct and to decipher than decimal.

Consider the following sequence of decimals: 072101108108111

The above stand for:

072 -> H
101 -> e
108 -> l
108 -> l
111 -> o

but it could easily be mistaken by:

007 -> ?
210 -> "
110 -> n
810 -> ?
811 -> ?
1   -> ?

Whereas in hexadecimal, that sequence would be: 48656c6c6f

First of all, the number of digits a down by a third, and second, the margin of error is reduced by a large extent.

share|improve this answer
6  
That's non-sensical. You would zero pad the decimal notation just as you would with hex. – cde Jan 4 at 12:42
4  
Like why would he confuse or repeat a zero at the start? Couldn't he just as easily confuse or repeat the 4 at the start and get 44,86,56,c6,c6,f ? – cde Jan 4 at 12:53
3  
@cde No it's perfectly sensible. To send a single letter in base10 requires ceil(log_10(128)) = 3 separate transmissions (rather obvious: every single letter has to be transferred). If you use any base larger than 11 you can reduce this nicely to 2 required transmissions. Or basically yes you would have to zero-pad every decimal value which would mean 50% more transmissions for the same result. – Voo Jan 4 at 19:34
    
@voo throughput wasn't really Mark's concern. It wasn't mentioned in the book or movie. The practical difference would have been a few seconds per message, a human scale difference that wouldn't matter. – cde Jan 4 at 21:59
2  
@cde throughput absolutely is a concern. There's a scene in the book showing Mark deciphering messages because NASA omits space and some consonants to speed up communication. And even if it didn't matter, no engineer worth their salt would ever design a system that's 50% less efficient than it could be without any gains (or want to stand outside 50% longer for no good reason) – Voo Jan 5 at 5:31

The hexadecimal system would only use 2 "bytes" per character. With the decimal system there could be letters or symbols requiring 3 "bytes" per character. If you want to avoid confusion and add a 0 in front of characters requiring 2 "bytes", you effectively add 50% to the communication compared to the hexadecimal system.

Plus, since Johanssen has an ASCII table laying around, chances are it contains both the decimal, octal and hexadecimal value for each character. This makes it easy to use an established system of communication.

share|improve this answer
2  
Don't use the term "bytes" in this context; it's begging for confusion. – Russell Borogove Jan 4 at 21:16
    
No, it didn't. The table Mark found only had seven bit binary and Hex, no decimal or octal notation. And it looked dumb – cde Jan 4 at 21:53
1  
A 4-bit value is called a 'nyble' (or nibble or nybble). A byte is two nybles. Nerds love their word play. – Dan Allen Jan 5 at 10:32

Errors in the stream are also far more obvious with hex than with decimal. For example, if you get the following stream of characters, you know something is wrong:

141424344...

Numbers fall into the hex range 30-39, uppercase letters are 41-5A, lowercase are 61-7A. Space is 20. If you get a two-character sequence that does not start with 3, 4, 5, 6, or 7, or is not "20," then you know the sequence has an error.

But if you shift that sequence forward one character (ignore the leading "1"), it makes sense again: "ABC." You can assume the first character got garbled in transmission and is lost, but the rest of the transmission is readable. It would be far more difficult to do that with decimal.

share|improve this answer
    
Decimal would be simpler. If the first character of 3 isn't 0, 1, or 2, then something went wrong. Also they didn't use the space character, or any other punctuation. – cde Jan 5 at 1:29

16 positions is much easier for a human to read at a glance than 10 would be. A compass rose is a 16-position system (N, NNE NE, ENE...). Now try to think of a commonly used circle divided into tenths. There really aren't many, and we aren't as used to reading them.

There's a subtler advantage to hex ascii: the highest bit will never be set. If you see a hex digit greater than 7, it must be tge second digit of the chsracter. That gives you a quick way to realize you dropped a digit while transcribing, since half the second-nybble digits will be 7 or greater.

But, yeah, it's mostly a matter of "us geeks already know a suitable code; many of us could recreate most of it from memory., it'll be really easy for the machines to handle... why not."

share|improve this answer
    
Well... technically, in the film (and book) there are 17 positions... I'm not certain how fewer positions is more difficult than more positions... Surely four is easier than 8 is easier than 16... – Catija Jan 4 at 22:47
1  
Fewer is easier to read but takes mor steps tobsend the same info. It's a comprimise trying to find the balance between concision and error-resistance (where the latter also includes human fatigue). – keshlam Jan 4 at 22:55
1  
Is it worth noting that Mark regularly 'drops' some of the digits when he's transcribing them from his memory onto the ground? – user7812 Jan 5 at 0:33
    
@Richard: Yep. Design around the least reliable component -- the human. – keshlam Jan 5 at 6:42

As was said in most of the other answers, hexadecimal (and, more generally, base-2^n) numbers are THE standard in all things computer.

But there is another practical reason: when designing a system of communication involving humans, one wants to maximize throughput while minimizing the possibility of human error. And in terms of human error, hexadecimal notation is a lot more convenient when converting to ASCII, because since each character is one byte long, in is represented by precisely 2 hexadecimal digits. For comparison, in decimal a byte would be about 2.408 digits per byte in the case of continuous streaming (which would vastly increase human error), or 3 when encoding each character separately (which decreases throughput while still increasing probability of error, as one has to then convert the digits to a number afterwards and match the numbers to a linear table instead of using the more natural 16x16 ASCII table where the first digit is one coordinate and the second digit the other). Additionally, this perfect match eliminates the question of which mode of transmission to use (continuous or per-character).

share|improve this answer
    
The standard used to be octal, back when word and byte lengths were more variable... but once we locked into 8-bit bytes, hex took over. – keshlam Jan 5 at 6:44

All that is well and good but please tell me how this wouldn't be simpler to transcribe. It's what i thought of when he first started to work it out in the movie: 1. Using the numbers 5,4,3,2,1... create your own "ASCII" style table with 52 letters, 20 digits, required punctuation and space. You have 120 combinations right there if I am not mistaken. So 11111 could be A. 11112 could be B. Point to a number and pause 2 seconds then and spin camera 360 degrees and then point to next number to ensure repeating digits are recognized. If the camera has vertical panning capabilities, have it go up then down for all spaces. This would reset every word at least to help with missed letters.

So I only need 5 signs to point to which is way easier to follow than 16 or whatever. Plus I have more "compression" so quicker transmissions.

Write it on a sign and let them take a picture of your instructions. What am I missing?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.