In "The Martian" varför skulle han använda hex över bas 10 värden för alfabetet? [duplicera]

1

Det snabbaste sättet att kommunicera det engelska språket skulle bara ha att kameran pekar på bokstäver. Han förklarar att det skulle vara för svårt att berätta vad kameran pekade på. Eftersom begränsningsfaktorn är mängden diskreta riktningar som kameran kan peka varför skulle du använda hex över bas 10 värden för att översätta till bokstäver? Istället för 16 riktningar skulle du bara behöva diskriminera mellan 10. Du måste redan översätta från den numeriska representationen till brevrepresentationen. Jag antar att du skulle behöva antingen en avgränsare eller en överenskommen ordrymd (varje värde kommer vadderas med nollor om det använder mindre än maxordstorleken).

    
uppsättning fightermagethief 24.12.2015 09:14

2 svar

7

Jag tror att det kan finnas flera anledningar:

  • Han kan inte förhandla fram ett protokoll i förväg. Så säg att han använder decimala värden och skickar 2,5,5 . Är det "BEE" (med 1->A ) eller "CFF" (med 0->A ) eller "YE" (om det första numret är "25" istället för "2" och med 1->A ) eller bokstavsnummeret "255"? Det finns inget sätt att veta utan en överenskommen avgränsare och inget sätt att komma överens om en avgränsare som han bara gör på plats. Men om han skickar oktetter, 4 bitar / en hex siffra åt gången, finns det en underförstådd avgränsare varannan siffra.

  • Han kanske behöver kommunicera med en större teckenuppsättning än [A-Z] , särskilt eftersom han måste diskutera tekniska problem. Om han inte reser till något som ASCII, är det inte ett självklart sätt för honom att koda något annat än de 26 bokstäverna i alfabetet. Hur han säger "7" eller void main() { print("Hello"); } på ett sätt som mottagaren kommer att förstå ?

  • Hex blir effektivare om han behöver en teckenuppsättning med mer än 99 värden i den. Med decimal, så snart han lägger till en 100: e tecken (eller om han använder decimalvärden för att skicka ASCII-koder, så snart han vill skicka små bokstäver eller formaterad kod) måste han börja sända och ta emot 3 siffror för varje värde . Med hex har han inte det problemet fram till 256: e tecknet. Att sända 3 siffror per tecken minskar signifikant hans effektiva bitrate / bandbredd.

  • Kanske var fördelen med att ha 10 värden istället för 16 minimal. Vid 10 värden har du 36 grader separera var och en. Vid 16 har du 22.5. Och vid 26 är du nere på ca 13,8. Om 13.8 är för liten för att arbeta med men 22.5 är okej, det finns ingen anledning att öka upp till 36. Ju fler bitar du kan skicka direkt, desto snabbare kan du kommunicera. Så det vore bra att föredra att använda hex om inte 22,5 grader bara var inte tillräckligt bra för att vara en fungerande lösning alls.

  • svaret ges 24.12.2015 10:21
    5

    Hex skulle göra det mycket lättare att överföra ASCII. (Två siffror per tecken är motsatta till tre.)

    ASCII antogs förmodligen eftersom det är ett standardsystem och mer robust än ett vanligt alfabet.

    Somehow, we have to have complex astrophysical engineering conversations.

        
    svaret ges 24.12.2015 09:35