Pytanie:
Dlaczego Mark używa szesnastkowego do komunikacji?
MovieMe
2015-11-13 17:17:29 UTC
view on stackexchange narkive permalink

Dlaczego w filmie Marsjanin Mark używa szesnastkowego do komunikacji z NASA? Czy cyfry od 0 do 9 nie wystarczyłyby do wskazania liczby odpowiadającej alfabetowi?

Cóż, używają pełnej tabeli ASCII, a nie tylko alfabetu, więc.
Ściśle mówiąc, ASCII ma tylko 7 bitów, a on ma 8, więc mógłby użyć dowolnego znaku w Unicode (zakodowany w UTF-8), a nie tylko ASCII.:-)
@R Byłbym pod wrażeniem, gdyby botanik z prostym wykresem ASCII mógł znaleźć właściwe kodowanie UTF-8 dowolnych znaków Unicode poza podstawowymi 128 znakami ASCII.
@R .. Oryginalny ASCII miał niedrukowalne znaki na pierwszych 32 pozycjach.Więc technicznie potrzebuje tylko kodów 2-7 dla pierwszej cyfry, ponieważ 8-F są nadal niezdefiniowane w ścisłym ASCII.Ponieważ ASCII został zaprojektowany wyłącznie dla języka angielskiego i komunikują się po angielsku, nie potrzebują żadnych fantazyjnych znaków.Litery akcentowane i litery w innych skryptach (indyjskich, chińskich itp.) Zostały dodane do ASCII (stając się Unicode) znacznie później.„kawiarnia” jest tak samo dobra jak „kawiarnia” i jest mało prawdopodobne, aby użyli słowa, które można zapisać z akcentem, ani nie użyliby symbolu z innego języka.
5768792073686 Vhn 46 4220493 F.
@Mark: oczywiście, że powinieneś.(Milion lat temu, kiedy pisałem programy w asemblerze bezpośrednio w pamięci, potrafiłem czytać ascii dużo lepiej niż dzisiaj; ale nadal sobie radzę)
Prawdziwe pytanie brzmi: dlaczego użył szesnastkowego + znak zapytania zamiast tylko szesnastkowego?
Teraz pytanie do golfa kodowego: http://codegolf.stackexchange.com/questions/68621/create-an-ascii-to-hex-table-for-mark-watney
Nie, prawdziwe pytanie brzmi: dlaczego nie użył sixbit zamiast ascii?Odpowiedź: ponieważ nie był maniakiem komputerowym.Zalety Sixbit: Potrzebuje tylko 9 kart (8 + marker) zamiast 17. Mógł albo mieć większe sektory na kartę, albo mógł wcisnąć karty tylko w część koła, aby przyspieszyć transmisję (przez skrócenie czasu obrotu kamery).Pytanie dodatkowe: w jaki sposób NASA wysłała kolejne identyczne cyfry szesnastkowe?
Czułem, że moja odpowiedź była dość wyczerpująca, czerpiąc bezpośrednio z powieści źródłowej filmu.Czy jest jeszcze coś, co chciałbyś zobaczyć przed rozważeniem akceptacji?
Osiem odpowiedzi:
Valorum
2015-11-13 17:22:30 UTC
view on stackexchange narkive permalink

Marek wybiera system szesnastkowy przede wszystkim dlatego, że jego własna umiejętność ustalenia, na co wskazuje wskaźnik kamery, nie jest wystarczająco precyzyjna. Jeśli ma wszystkie 26 liter (plus kartę pytania i spację), istnieje rozsądna szansa, że ​​będzie miał trudności z ustaleniem, którą literę oznaczają. Dodaj liczby od 0 do 9 i będzie jeszcze gorzej. Co więcej, jeśli obrót zostanie wyłączony nawet o kilka stopni, komunikacja z jakąkolwiek prędkością będzie prawie niemożliwa.

Dla porównania, karty szesnastkowe (plus jedna dodatkowa karta, aby wskazać pytanie) wymaga tylko 17 kart, znacznie łatwiejszej do opanowania liczby:

Będziemy musieli rozmawiać co pół godziny szybciej niż pytania tak / nie. Kamera może obracać się o 360 stopni, a części anteny mam mnóstwo. Czas zrobić alfabet. Ale nie mogę po prostu użyć liter od A do Z. Dwadzieścia sześć liter plus moja karta z pytaniami to dwadzieścia siedem kart dookoła lądownika. Każdy uzyskałby tylko 13 stopni łuku. Nawet jeśli JPL perfekcyjnie skieruje aparat, jest duża szansa, że ​​nie będę wiedział, o którą literę chodziło.

Będę musiał użyć ASCII. W ten sposób komputery zarządzają postaciami. Każdy znak ma kod numeryczny od 0 do 255. Wartości od 0 do 255 można wyrazić jako 2 cyfry szesnastkowe. Dając mi pary cyfr szesnastkowych, mogą wysłać dowolny znak, w tym cyfry, znaki interpunkcyjne itp.

...

Więc ja ' Zrobię karty od 0 do 9 i od A do F. To daje 16 kart do umieszczenia wokół kamery oraz kartę pytań. Siedemnaście kart oznacza ponad 21 stopni każda. O wiele łatwiejszy w obsłudze. Martian: Andy Weir

Oczywiście w filmie wskaźnik wydaje się bardziej skuteczny w obracaniu i zatrzymywaniu się (co unieważnia jego rozumowanie), ale to dla ciebie Hollywood.

dzięki za to @richard,. Chodziło mi o to, że cyfry od 0 do 9 z dodatkowym znakiem "spacji" to łącznie 11 znaków.360/11 byłoby więcej w stopniach niż 360/16 szesnastkowej.Np. 2Space oznacza B, 26Space oznacza Z, itd
@Barry decyduje się na użycie kodów ASCII, ponieważ on i NASA byliby już z nimi dobrze zaznajomieni, ponieważ w ten sposób tekst jest przesyłany elektronicznie.
W jaki sposób odpowiedź, która całkowicie nie rozumie pytania, otrzymuje 7 głosów za?
@Barry Wyobrażam sobie, że rozmowa między NASA a astronautą osiadłym na Marsie może czasami zechcieć zawierać pewne rzeczywiste liczby.Zaletą szesnastkowego jest to, że wszystko jest * unikalną * dwucyfrową liczbą.Jeśli używasz tylko dziesiętnego systemu liczbowego do odwzorowywania liter alfabetu, nie możesz wtedy używać rzeczywistych liczb;czy „26” oznacza cyfrę 26 czy literę Z?
@MikeEdenfield, Posunąłbym się nawet do nazwania Marka „dobrze zaznajomionego” z kodem ASCII.Książka wskazuje, że miał szczęście znaleźć tabelę ASCII w jednym z plików jego byłych kolegów (prawdopodobnie Johanssena).Co mnie wkurza, mimo że nie chcą przynosić kopii Wikipedii na wszystkich laptopach.Ale Disco?Naprawdę?
@Barry W tym przypadku Z przyjmuje dodatkowy znak do przedstawienia, ponieważ każdy znak jest rozdzielany spacjami.Używanie systemu szesnastkowego, który każdy jest zaznajomiony i wygodny w użyciu, oznacza, że KAŻDY znak, wielkie i małe litery, 0-9 i znaki interpunkcyjne, a także mnóstwo białych znaków mogą być reprezentowane przez jedną parę znaków szesnastkowych.Obejmuje to użycie znaku „null” (00) do oznaczenia końca transmisji.Zatem wielkie litery Z = „5A”, a małe litery Z = „7A”.Spacja = „20”, kropka = „2E” itd.
@moyli - Jak myślisz, w jaki sposób źle zrozumiałem pytanie?
Pytanie brzmi: "Dlaczego Mark użył notacji z 16 symbolami zamiast 10 symboli?"Odpowiadasz na pytanie, które brzmiałoby: „Dlaczego Mark użył notacji z 16 symbolami zamiast 38 symboli?”
Richard odpowiedział, używając informacji z wszechświata, gdzie postać nie ważyła opcji 16 na 10;wybrał od 16 do 38 lat i to był argument za 16. Duchem pytania jest omówione, jeśli nie konkretne porównanie, które nie było nawet rozważaną opcją w książce.
I nie, pytanie brzmi: „dlaczego Mark używał szesnastkowego do komunikacji?”na który konkretnie odpowiemy tutaj.Podpytanie, czy zamiast tego można użyć cyfr, nie jest omawiane bezpośrednio, ale nie jesteśmy tutaj, aby debatować, który z nich byłby lepszy - to był powód, dla którego Mark wybrał hex.
@phantom42 Połowa pytań na stronie prawdopodobnie zadawałaby szalenie różne rzeczy, gdybyśmy poszli tylko na podstawie tytułu.
@Moyli - Pytanie, dlaczego Mark (we wszechświecie) nie użył języka, który uważasz za bardziej „wydajny”, wykracza poza zakres witryny.Byłoby to „oparte na opiniach”.
Ale o to właśnie chodzi * * * *.Nie wierz mi na słowo, [tak powiedział OP] (http://scifi.stackexchange.com/questions/107675/why-does-mark-use-hexadecimal-to-communicate#comment253606_107677).Edytuj pytanie, aby pasowało do tego, na co faktycznie odpowiadasz, lub zagłosuj, aby zamknąć pytanie jako oparte na opinii.
@Richard Myślę, że trudno byłoby ci dyskutować z pytaniami w formie „Dlaczego postać X nie zrobiła tego, co moim zdaniem byłoby o wiele lepszym pomysłem?”są poza zakresem witryny, biorąc pod uwagę dużą liczbę osób, które mogą pozostać otwarte, w tym co najmniej kilka z odpowiedziami, które * otrzymały wysokie punkty * od Ciebie *.
@Richard, Bardzo dobra odpowiedź.Martwi mnie tylko to, że nie potrzebował karty ze znakiem zapytania.Alfabet ascii ma w sobie znak zapytania ... A może bardziej z powodów związanych z interfejsem użytkownika, aby oznaczać rzeczywisty koniec zdania, a nie tylko przypadkowe zatrzymanie ...
@Roman Nic Cię nie niepokoi.Karta pytania nie jest znakiem zapytania, ale rzeczywista odpowiedź / pytanie * Znak * odsyła.Wydaje się również oczywiste, dlaczego nie używałbyś podstawy 10 do przesyłania danych, jeśli już ustaliłeś, że podstawa 16 jest doskonale analizowalna.Jeśli używasz podstawy 10, nagle potrzebujesz 3 obrotów, aby przesłać jeden znak zamiast 2. Teraz możesz wybrać podstawę 12 (ASCII ma tylko 7 bitów), ale po co wybierać całkowicie nieintuicyjny zamiast ładnego i prostego standardu?Żaden inżynier nie zastanawiałby się dwa razy, którą podstawę wybrać w takich okolicznościach.
Anthony Grist
2015-11-13 20:08:42 UTC
view on stackexchange narkive permalink

Oto główne powody, dla których przychodzi mi do głowy preferowanie szesnastkowego zamiast (dość arbitralnego) odwzorowania dziesiętnego nad alfabetycznym:

  1. Szesnastkowe i ASCII powinny być czymś, co naukowcy z NASA są zaznajomieni, więc po przedstawieniu 16 kart - 0-9 i AF - intencja jest od razu oczywista: „Chcę komunikować się szesnastkowo”.

  2. Nie ma dwuznaczności. Odwzorowanie 10 cyfr dziesiętnego systemu liczbowego na literę alfabetu zadziała, pod warunkiem, że będziesz chciał używać tylko liter alfabetu. Możliwość korzystania z rzeczywistych liczb prawdopodobnie przydałaby się w rozmowie między NASA a astronautą osiadłym na Marsie. Szesnastkowy oznacza, że ​​każda litera alfabetu, każda cyfra oraz wiele znaków interpunkcyjnych i innych symboli może być jednoznacznie reprezentowane przez liczbę dwucyfrową.

  3. Szesnastkowy to właściwie szybciej się komunikować. Jeśli musisz użyć „spacji” między każdą literą, to patrzysz na dwa ruchy kamery dla pierwszych 9 (lub 10, jeśli zamapujesz A na 0) liter alfabetu i trzy ruchy do końca. Szesnastkowy to dwa ruchy kamery na znak.

Chociaż nie ma źródła tekstowego, gdyby ktoś zapytał autora, jestem pewien, że pojawiłby się powód nr 3.Komunikacja heksadecymalna byłaby po prostu szybsza.Ponadto, jeśli trzeba było wysłać jakiekolwiek programy binarne, można je było wysłać w postaci prostego szesnastkowego.
Dawno temu zrobiłem całą masę kodowania szesnastkowego.To nie jest tak trudne, jak się wydaje, jeśli zrobiłeś dużo.Ponadto jest bardzo wydajny podczas wysyłania informacji w ograniczonej przepustowości.
Jeśli usuniesz 32 niewyświetlane znaki, wszystkie 7-bitowe znaki ASCII można zakodować za pomocą 2 cyfr od 0 do 9.Jednak wymagałoby to dodatkowej komunikacji z NASA w celu ustanowienia nowego standardu, czego Mark nie miał.
Yakk
2015-11-13 21:31:47 UTC
view on stackexchange narkive permalink

Nie jest informatykiem. Wymyślenie nowego sposobu przesyłania całego tekstu, który chcesz, nie będzie banalne.

Mógł stworzyć tabelę zawierającą 100 wpisów (z wartościami od 00 do 99) i każdemu przypisać znak. Ale wtedy musiałby przekazać tabelę z powrotem do siedziby NASA, i i tak potrzebowałaby takiej samej liczby wiadomości, aby przesłać postać! (2 wiadomości na znak).

Zwykłe wysłanie 01-26 w celu zakodowania liter nie jest dobre: ​​zakodowanie liczb wymagałoby ich przeliterowania! Gorzej, jeśli muszą się komunikować ? lub ! lub . lub , lub # kod> itd. (mało prawdopodobne, ale możliwe)

ASCII będzie dobrze znane obu stronom. Nie ma potrzeby przesyłania tabeli. Zawiera podstawowy zestaw znaków, który pozwoli ci przekazać większość informacji technicznych (w tym programowanie) między jedną stroną a drugą. Na Ziemi będą mogli wpisać wiadomość w edytorze tekstu i transkodować ją do ASCII, po prostu patrząc na nieprzetworzone bajty wiadomości, i nie będą musieli do tego pisać niestandardowego oprogramowania, co sprawia, że problem jest łatwy i niezawodny po ich zakończeniu.

Krótko mówiąc, istniał już dobrze znany sposób komunikowania się przy użyciu 2 kawałków na znak. Ponowne wynalezienie nowego protokołu będzie podatne na błędy i trudniejsze. Gdy 1/17 łuku była wystarczająco duża, aby łatwo ją rozróżnić, nie ma większych korzyści z obniżenia precyzji, przynajmniej na początku.

Jak wspomniano, przejście do 26 lub 36 lub więcej napotyka problemy z precyzją (26 liter + 10 cyfr + spacja + 3 symbole = 40 lub 9 stopni łuku na znak). Zatem przesyłanie 1 litery na ruch kamery nie było praktyczne. Wykonanie 2 znaków na 3 ruchy kamery byłoby prawdopodobnie wykonalne, ale napotyka na problem „przeprojektowania” i problemy z komunikacją protokołu.

W międzyczasie wysłanie „Użyj ASCII” i znaków 0-9 A-F i a? rozwiązał problem.

Peter Davidson
2015-11-13 20:30:44 UTC
view on stackexchange narkive permalink

Podejrzewam, że po części jest to spowodowane tym, że wygląda bardziej technicznie i imponująco.

Teoretycznie, szesnastkowy powinien zapewniać znacznie większą przepustowość - na każde dwie pozycje kamery można przesłać 1 pełny bajt, zawierający 255 możliwych znaków. Natomiast podejście dziesiętne dopuszczałoby tylko 99 znaków. Jednak nic (co mogę sobie przypomnieć) nie wskazuje na to, że dodatkowa przepustowość była konieczna lub nawet używana.

Prostszy system dziesiętny może z łatwością zawierać 26 wielkich liter, 26 małych liter, cyfry i powiązane znaki interpunkcyjne znaki.

Podejście szesnastkowe opiera się na tablicy ASCII - która zwykle ma tylko 7 bitów; tylko 4 wartości (z pełnych 16) pierwszej cyfry są używane jako drukowane litery, jeśli wykluczone są małe litery.

Tam, gdzie dodatkowe pasmo byłoby przydatne, byłoby zdefiniowanie tabeli większości -używane słowa. Mark mógł z łatwością napisać listę popularnych słów i wyświetlić je do kamery. Mogliby znacznie zwiększyć szybkość komunikacji, ponieważ mieliby do wykorzystania słownik 12x16 = 192 słów. Xkcd ( https://xkcd.com/1133/) pokazał nam, że pełna komunikacja jest możliwa przy użyciu zaledwie 1000 słów (10 bitów). Posiadanie 192 szybkich słów z pełną pisownią słów, których nie ma na liście, znacznie ułatwiłoby komunikację. Nie wydaje się też nierozsądne, aby Mark to rozgrywał i przekazywał to Ziemi. Nawet kilka słów by pomogło.

Gdyby miał więcej papieru i trochę cierpliwości, jeszcze lepszym podejściem byłoby użycie 3-cyfrowych kodów szesnastkowych - dałoby mu to 4000 słów plus alfabet.

Jeszcze lepiej byłoby przyjąć proste kodowanie Huffmana - tj. używać krótszych kodów dla częstych symboli. Potrafił umieścić najczęściej używane słowa / litery w pierwszej cyfrze, wraz ze specjalnymi kodami dla słów dwu- lub trzycyfrowych. Dałoby to różną długość wiadomości, ale nadal byłoby bardzo możliwe do ręcznego odkodowania.

Jednak najlepszym podejściem byłoby użycie komputera do opracowania optymalnie skompresowanego zestawu danych, a następnie przesłanie go przy użyciu pełnego zakresu 8 bitów. Wymagałoby to nieco skomplikowanego programowania, które prawdopodobnie by go przerosło - nie byłoby efektywne użycie standardowych bibliotek kompresji, ponieważ lepsze byłoby podejście ze stałym słownikiem. W ten sposób mógłby zbliżyć się do teoretycznego limitu 1 bitu na znak lub 4 znaków na każde ustawienie kamery.

Ale prawdopodobnie nie byłoby to tak dramatyczne dla czytelników / widzów.

W rzeczywistości nie ma potrzeby ulepszania „ręcznego” trybu komunikacji, ponieważ robią to tak długo, aby naprawić system operacyjny łazika, aby używał pathfindera.Zwiększona przepustowość HEX z pełnym ASCII jest również wysoce wątpliwa, ponieważ większość znaków w ASCII nie będzie używana.
Na początku nie wiedzieli, że uda im się zmusić łazik do komunikacji.Sztuczka z wysyłaniem danych przez interfejs logowania wydawała się wiarygodna, ale wygodna ... Nadal uważam, że gdybym czekał na nadejście wiadomości po 30 sekundach na znak, byłbym chętny do przejścia na bardziej wydajną metodę dość szybko.Zwłaszcza, że miałbym mnóstwo czasu na przemyślenie tego.
Peter, racja.Zwraca się uwagę, że znudził się pisaniem pozycji kamery w dół.
Jeśli pamięć służy, użyli niektórych bardziej zaawansowanych metod, takich jak kodowanie Huffmana ... kiedy ludzie na ziemi pomogli mu połączyć się w bardziej efektywny sposób komunikacji, który był mniej zależny od interakcji międzyludzkich ... po prostu niewidzę to, ponieważ komputery robią to za niego
Właściwie 256 znaków.Plus zbędny znak zapytania.
Zakładając, że nie miał podręcznej książki „Najczęstsze 1000 słów” (która zależy od używanego źródła), on i NASA musieliby tracić dużo czasu na przesyłanie wszystkich słów tylko po to, aby zmienić protokół i prędkośćsprawy się _ dużo_ później.Ważniejsze było utrzymanie go przy życiu.
Jak powiedziałem, prosty schemat wymagałby tylko 192 słów, które z łatwością mógłby pokazać przed kamerą.Nie jest też nierozsądne, że miałby dość obszerny materiał referencyjny, który z łatwością mógłby zawierać taką listę.Mógł również odnieść się do znanego dokumentu i określić częstotliwość występowania słów, ręcznie lub za pomocą prostego skryptu.Nawiasem mówiąc, znalazłem fajny artykuł z lat 80-tych, który pokazuje wygodny 4-bitowy schemat kodowania - http://comjnl.oxfordjournals.org/content/24/4/324.full.pdf
Bardzo szeroko używana biblioteka zlib z formatem deflate * * (ale nie gzip * format * lub * program *) pozwala na użycie (kilku) ** gotowych słowników **: http://stackoverflow.com/questions/21712250/is-it-possible-to-create-valid-gzip-with-static-dictionary http://stackoverflow.com/questions/15295036/is-there-a-way-to-store-gzips-dictionary-from-a-file
Colin Q Bang
2015-11-14 12:40:36 UTC
view on stackexchange narkive permalink

(Lubię fragmenty kilku innych odpowiedzi i komentarzy, ale wszystkie mają swoje problemy, więc oto proszę ...)

"tl; dr"? Tylko pogrubienie dla zwięzłej wersji.

Uwaga , niektóre odpowiedzi lub komentarze dotyczą tego, „dlaczego nie mają odpowiadać bezpośrednio każdej pozycji wskaźnika do symbolu, a nie do kodu ”. Nowy cytat (poniżej i tak jak w odpowiedzi Richarda) wyjaśnia to, ale pytanie brzmiało po prostu „dlaczego nie używać cyfr od 0 do 9”, tj. Dziesiętnych zamiast szesnastkowych . Zacznę więc od ASCII. W przypisie końcowym powiem trochę o bardziej efektywnych schematach „wskazywania liczby odpowiadającej alfabetowi”, aby zacytować pytającego, ponieważ myślę, że miał na myśli kod, ale prawdopodobnie nie ASCII. (I może nie jest tak jasne w filmie, jak w powieści, że to jest używany kod. Nie wiem, byłem trochę wstawiony, kiedy go oglądałem. )


Najpierw odpowiedz na drugą część: po prostu „tak”, wysłanie kodów w postaci cyfr od 0 do 9 jest całkowicie wystarczające. W powieści cytat (dzięki Richardowi), który wyjaśnia, dlaczego używać ograniczonej liczby symboli, brzmi:

„Dwadzieścia sześć liter plus moja karta pytań to dwadzieścia siedem kart wokół lądownika. Każdy z nich uzyskałby tylko 13 stopni łuku. Nawet jeśli JPL celuje idealnie w kamerę, jest duża szansa, że ​​nie będę wiedział, o którą literę chodzi. : Od 0 do 9 oznacza mniej kart, więc też dobrze.

Tym, którzy nie mają skłonności matematycznych, może się wydawać, że jest coś specjalnego w szesnastkowym ( gdzie cyfry A - F reprezentują 10-15, a pozycja cyfry wskazuje potęgę (wykładnik) 16 zamiast 10) w stosunku do ASCII, jak w tym innym cytacie:

„Muszę więc używać ASCII *. W ten sposób komputery zarządzają znakami. Każdy znak ma kod numeryczny z zakresu od 0 do 255 **. Wartości od 0 do 255 można wyrazić jako 2 cyfry szesnastkowe. ”

Ale nie : ASCII to tylko tabela, która„ odwzorowuje ” liczbę na symbol, więc ta liczba może być równie łatwo bardziej znaną liczbą dziesiętną z cyframi od 0 do 9.

Pierwsza część - „dlaczego szesnastkowo?” - nie ma odpowiedzi, przynajmniej w filmie. Prawdopodobnie najlepszą odpowiedzią jest odpowiedź spoza wszechświata: wydaje się, że to nerdowska nauka, a ten film kocha swoich nerdowskich naukowców. b> Hej, zadziałało dla Rona Howarda i Toma Hanksa.

Zasadniczo jest bardziej wydajne - mniej ruchów wskaźnika - mieć 16 „cyfr” (wskaźnik Pozycje) niż 10. Rzeczywiście, im więcej, tym lepiej, dopóki nie stanie się zbyt wiele naszych ulubionych Marsjan, aby je rozróżnić. - okoliczności bohatera robotów. Jednak @Ghanima i @Peter Davidson są najbardziej trafni zauważając, że używając ASCII, tak jak w The Marsian, możliwa efektywność posiadania 16 na 10 cyfr na ruch wskaźnika jest w większości zmarnowana. Aby wyjaśnić, jak niewielką różnicę ma to w rzeczywistym przypadku: W ASCII liczby reprezentujące każdą z „spacji”, 0 - 9, A - Z (ale nie az) i symbole oprócz {|} ~ są mniej niż 99, więc jeśli nie masz nic przeciwko Byciu krzykliwym kutasem dla swojego kumpla z Martianina, wysyłając SMS-y w ALLCAPS i możesz oprzeć się „przytulaniu” {{Matt Damon}} (Możesz? jest uroczy!) nie potrzebujesz więcej ruchów wskaźnika (2) na znak w systemie dziesiętnym niż szesnastkowym .


Przypisy końcowe:

* Hej Mark, nie, nie musisz używać ascii. Najwyraźniej możesz przekazać NASA każdą wymyśloną metodę, której chcesz, aby użyła. Na przykład (nadal używając szesnastkowego, jeśli myślisz numerycznie) jedna, w której każda z 15 najpopularniejszych liter jest reprezentowana tylko przez jedną „cyfrę” (jeden ruch wskaźnika), od 0 do F pomijając 1, a pozostałe 11 przez wartości od 10 do 1A. Wartość „1” jest pomijana, aby podczas wysyłania było jasne, że jest to pierwsza cyfra dwucyfrowej wartości kodu.

Podobnie jak ASCII jest to prosty schemat kodowania symboli, ale znaczna większość wysłanych listów potrwa o połowę krócej. Wysyłanie liczb ma mniejszy priorytet (nie było to wspomniane w powieściach ani w filmie, który myślę). Nawet w ascii punkt kodowy dla każdej cyfry jest liczbą dwucyfrową. Więc jeśli chcesz wysłać dużo cyfr, zamiast kodować je jak w ascii i / lub jednym z wcześniej opublikowanych komentarzy, możesz wysłać je jako „zwykłe liczby”. Jeśli kilka dodatkowych pozycji wskaźnika nie jest zbyt wiele, prostym sposobem jest dodanie takiej, która będzie oznaczać, że „następny krok to liczba”, a druga to „to, co jest następne, nie jest liczbą”. Sygnalizowanie tego bez tych dodatkowych pozycji (to znaczy używanie tylko wartości kodu, które mogą być danymi liczbowymi) jest pozostawione jako ćwiczenie dla czytelnika.

Inni wspominają o bardziej wymyślnych rzeczach, takich jak kodowanie Huffmana, ale hej, Mark jest po prostu najlepszym botanikiem na Marsie - może to zostawić matematycznym lub komputerowym maniakom w NASA.

** [odsuwa okulary kujona na grzbiecie nosa]: w rzeczywistości ASCII używa tylko 0 - 127, a nie 0 - 255.

Deleteman
2015-11-13 20:20:49 UTC
view on stackexchange narkive permalink

Cóż, zakładając, że masz na myśli, dlaczego nie użyli po prostu kodu ASCII ułamków dziesiętnych zamiast szesnastkowego?

Technicznie mogliby mieć, mam na myśli, że 32 to znak spacji, 97 to litera „a”, 117 to „u” i tak dalej.

Technicznie rzecz biorąc, Mark mógł po prostu napisać na swojej tablicy „ASCII używając liczb dziesiętnych”, aby wysłać tę wiadomość jako obraz, a następnie użyć tylko 11 innych anten do reprezentowania wszystkich 10 cyfr od 0 do 9 i znaku zapytania.

To dałoby mu szerszy zakres dla każdej litery, ALE większość liter alfabetu w tabeli ASCII jest reprezentowana przez 3 cyfry (na podstawie 10), więc komunikacja trwałaby nieco dłużej.

To jedyny powód, dla którego myślę, że ma to dla mnie sens, czas, jaki zajęłoby im przesłanie każdej litery, zwiększyłby ogólny czas komunikacji.

Ale teraz otrzymujesz „22”.Czy to v, 22 litera?A może jest to „122” i nie udało Ci się tylko zauważyć „1”?Czy jest to numeryczna 22?Dzięki ASCII masz błędy łatwiejsze do wykrycia i szerszy zakres rzeczy, które możesz powiedzieć bez wątpienia - a wszystko to przy 2 ruchach zamiast 3, więc 33% mniej szansy na popełnienie błędu w niektórych postaciach.Możesz czytać tekst z niektórymi losowymi znakami, ale 33% mniej jest zawsze łatwiejsze.
Masz na myśli HEX, prawda?ponieważ nie mówię, że nie powinien był używać ASCII, wręcz przeciwnie, mówię tylko, że mógłby bardzo dobrze przedstawić wszystkie znaki ASCII za pomocą liczb dziesiętnych, potrzebowałby tylko więcej ruchów.I myślę, że rozumiem twój drugi punkt, nie wiedziałby, czy każda litera jest 2-cyfrową, czy 3-cyfrową… jeśli to prawdopodobnie właściwa odpowiedź.
Gdyby Watney miał około 110 lat, mógłby użyć liczby ósemkowej.
Hagen von Eitzen
2015-11-15 03:44:29 UTC
view on stackexchange narkive permalink

Większość wykresów referencyjnych dla ASCII organizuje znaki w tabeli 16 kolumn i 16 wierszy (cóż, ściśle mówiąc tylko 8 wierszy; lub może tak jak ten historyczny przykład w 16 wierszy i 8 kolumn), dzięki czemu szczególnie łatwe jest dekodowanie / kodowanie od / do par cyfr szesnastkowych.

Chris Dobson
2020-04-26 08:18:48 UTC
view on stackexchange narkive permalink

Jakkolwiek pokroisz, 17 kart daje mu 17 symboli, czy to liter, czy cyfr. Jedyną zaletą szesnastkowego jest to, że symbole od 10 do 16 są prawdopodobnie węższe w szesnastkowym (A - F). Jeśli liczy się odstęp między kartami, nie ma żadnej korzyści. Brzmi dobrze, ale to nonsens.

Cześć, witaj w SF&F.Naprawdę nie jest jasne, co mówisz.Sugerujesz, aby karty były ponumerowane od 1 do 17?Pytanie brzmi, dlaczego 16 (17) kart, a nie 10 (11)?Czy przeczytałeś wszystkie poprzednie odpowiedzi?To nie jest „nonsens”.
Mówię, że 16 kart daje 16 liter, niezależnie od tego, jak je przedstawisz. Pierwsze 16 liter alfabetu to A B C D E F G H I J K L M N O P W bazie 10 można to zakodować 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 W przypadku bazy 16 (szesnastkowej) byłoby 0 1 2 3 4 5 6 7 8 9 A B C D E F. Kod ascii to (w podstawie 10) 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 Możesz użyć dowolnego z tych kodów symboli, które lubisz, ale nadal otrzymujesz tylko 16 liter. Przeczytałem wiele poprzednich odpowiedzi, ale nie wszystkie.Jeśli przegapiłem coś ważnego, daj mi znać.
DavidW, przy okazji, dziękuję za odpowiedź.Dodam, że film bardzo mi się podoba i uważam, że generalnie bardzo dobrze oddaje naukę.Ale nigdy nie znalazłem sensownego wyjaśnienia tej konkretnej gry (karty z alfabetem szesnastkowym).


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...