Dlaczego ósemkowe i szesnastkowe? Komputery używają liczb dziesiętnych binarnych i ludzkich

16

Dlaczego używamy innych baz, które nie są binarne (dla komputerów) ani dziesiętne (dla ludzi)?

Komputery ostatecznie reprezentują je w postaci binarnej, a ludzie zdecydowanie wolą uzyskać ich dziesiętną reprezentację. Dlaczego nie trzymać się tych dwóch baz?

Quora Feans
źródło
Wydaje mi się, że nie ma solidnego powodu, aby używać liczb szesnastkowych lub czegokolwiek z dużą ilością glifów. Co więcej, wydaje mi się, że repozytorium binarne może zastąpić inne notacje w ogólnym przypadku w przyszłości.
Michaił V
@MikhailV Reprezentacja szesnastkowa jest o wiele bardziej zwięzła niż reprezentacja binarna. Powiedziałbym, że to całkiem niezły powód, aby używać większej liczby glifów niż, powiedzmy, 2.
Ben Jones

Odpowiedzi:

19

Liczby ósemkowe (podstawa-8) i szesnastkowe (podstawa-16) stanowią rozsądny kompromis między użytkowaniem komputerów w systemie binarnym (podstawa-2) a systemem dziesiętnym (podstawa-10), z którego korzysta większość ludzi.

Komputery nie są dobre pod względem wielu symboli, więc baza 2 (gdzie masz tylko 2 symbole) jest dla nich odpowiednia, podczas gdy dłuższe ciągi, liczby z większą liczbą cyfr, są mniejszym problemem. Ludzie są bardzo dobrzy z wieloma symbolami, ale nie są tak dobrzy w zapamiętywaniu dłuższych ciągów.

Ósemkowy i zastosowanie heks ludzki zaletę, że mogą one pracować z wieloma symbolami, gdy jest jeszcze łatwo wymienialne z powrotem i do przodu pomiędzy binarny, ponieważ każda cyfra Hex oznacza 4 cyfr binarnych ( ) i każdy ósemkowy cyfra oznacza 3 ( 8 = 2 3 ). Myślę, że hex wygrywa ponad liczbę ósemkową, ponieważ można go łatwo użyć do reprezentowania bajtów i liczb 16/32/64-bitowych.16=2)48=2)3)

dtech
źródło
8
Jako przykład rozważ wartości szesnastkowe RGB. Łatwo zapamiętać, że biały to #FFFFFF. Trudniej jest pamiętać, że biel ma 16777215 miejsc po przecinku. Chcesz usunąć czerwony składnik # EF439A? Otrzymujesz # 00439A, tzn. Po prostu zmieniasz pierwsze dwie cyfry na 0. W systemie dziesiętnym trzeba odjąć 15663104. Powodzenia, pamiętając o tym.
jmite
3
Aby być dokładnym, kolory w zapisie dziesiętnym będą używać potrójnych, a biały będzie (255, 255, 255). Łączymy wartości szesnastkowe tylko dlatego, że zawsze są to 2 cyfry. Moglibyśmy zrobić to samo z miejscami po przecinku, używając zer, wtedy biały byłby 255255255 zamiast 16777215.
Spidey
@Spidey Dokładnie. Co więcej, mój mózg może łatwiej analizować coś w rodzaju (127, 255,255) i mogę nawet zgadywać, jak będzie wyglądał kolor, ponieważ widzę proporcję ilości atramentu i nie muszę obliczać go w heksie w głowie.
Michaił V
13

Używamy ich dla wygody i zwięzłości.

2)3)2)40110100169151

Powiedzmy, że potrzebujesz 64-bitowych adresów pamięci. Możesz spojrzeć na wszystkie 64 binarne bity lub skondensować je do 16 cyfr szesnastkowych. Często nie trzeba porównywać kilku adresów, aby sprawdzić, czy są takie same lub ciągłe. Wolisz spojrzeć na 64 bity lub 16 cyfr?

Logan Mayfield
źródło
5
Oktal ma tę zaletę, że nie dodaje żadnych cyfr i może być bardziej praktyczny w czasach 6-bitowych znaków (i zwykłych nie-potęgi dwóch słów, np. 12-bitowy PDP-8, 18-bitowy PDP- 1 [rejestry adresowe dla CDC 6x00], 36-bitowe PDP-6, 60-bitowe rejestry operandów dla CDC 6x00). Przejście do znaków / bajtów oktetów i potęgi dwóch słów sprawia, że ​​szesnastkowy jest bardziej atrakcyjny.
Paul A. Clayton
„Wolisz spojrzeć na 64 bity lub 16 cyfr?” Z pewnością przyjrzałbym się zgrupowanym bitom. Ale oczywiście nie w notacji „01”, która jest brzydka i rani mnie w oczy. I nawet nie mówię, ile klątw rani mnie oczy.
Michaił V
@MikhailV: Co rozumiesz przez zapis „01”? Mówisz, że wolisz patrzeć na bity, ale nie w notacji „01” - jakiej notacji byś wtedy użył. Jeśli powiesz, że hex szkodzi twoim oczom, nie mogę przestać myśleć, że ćwiczyłeś trochę więcej na liczbach dziesiętnych niż na hexach. (Właściwie to myślałem, że to (solo) seks był zły dla twoich oczu, ale to już inna historia.)
PJTraill
Wolę to od popularniejszej obecnie odpowiedzi dtech, ponieważ podkreśla łatwość użycia, ale można było zauważyć, że nie tylko krótsze reprezentacje, ale także większa różnorodność cyfr ułatwiają określenie, gdzie się znajdujesz, czytając cyfrę w kodzie szesnastkowym lub ósemkowy
PJTraill
@ PaulA.Clayton: dobre punkty; inną zaletą PDP-11 było to, że chociaż słowa (naturalna jednostka operacji) miały 16 bitów, większość kodów instrukcji naturalnie przechodziła w operację 2-bitową i cztery 3-bitowe grupy reprezentujące numer rejestru i tryb adresu, z których oba miały 8 możliwości, z dwóch argumentów. Moje ulubione: 014747 = MOV - (PC), - (PC), który sam zapełnia pamięć (jeśli jest dozwolona).
PJTraill
5

Liczby binarne w tekście są stratą miejsca.

2)52)n-1

Karolis Juodelė
źródło
2

Wprowadzenie

Jak już wspomniano w innych odpowiedziach, mogą istnieć różne oznaczenia dla różnych celów i ograniczeń. Notacje to tak naprawdę kodowanie jako sekwencja znaków, a dzięki analizie algorytmów i struktury danych wiemy, że istnieje wiele sposobów kodowania abstrakcyjnych pojęć, na przykład listy lub zestawu, w zależności od tego, co chcemy z tym zrobić. . W tym przypadku jest to głównie wygoda algorytmiczna.

To samo dotyczy rozważania reprezentacji liczb. Wewnątrz komputera wszystko jest binarne na najniższym poziomie, chociaż w niektórych aplikacjach można zastosować reprezentacje obce.

Poza komputerem używamy wszelkiego rodzaju zrozumiałych dla człowieka reprezentacji, w zależności od ludzkiej wygody w zakresie reprezentowanej wartości. Reprezentacja binarna jest często zbyt długa i nieuporządkowana, aby można ją było łatwo odczytać i napisać, dzięki czemu ma miejsce szesnastkowo lub ósemkowo. Wybór może często mieć związek ze sposobem, w jaki informacja jest ustrukturyzowana w binarnym słowie, które niekoniecznie ma oznaczać liczbę.

Ale biorąc pod uwagę tylko cyfry , tj. Reprezentację liczb, warto spojrzeć na inne systemy reprezentacji liczb, aby zrozumieć, że głównymi czynnikami są: fizjologia, nawyk i wygoda. Wygoda jest oczywiście głównym czynnikiem kreującym różnorodność, ponieważ zależy od kontekstu użytkowania.

Szerszy wygląd

2)n

Treść pytania nie wydaje się w żaden sposób ograniczona do komputerów, a ludzie używali i nadal używają kilku innych systemów numeracji. Niektóre z nich są nawet używane w komputerach, na przykład w przypadku długich liczb całkowitych (nie wspominając o liczbach niecałkowitych ).

Pierwsza uwaga jest taka, że ​​kiedy ludzie liczą w tysiącach lub milionach jako jednostkę, jest to nadal uważane za dziesiętne, ponieważ są to potęgi 10. Można się zastanawiać, dlaczego ósemkowa lub szesnastkowa nie powinna być uważana za odmianę binarną. Jednym z możliwych powodów może być liczba symboli używanych do reprezentowania liczb (choć jest to kwestia sporna, jak zobaczymy w przypadku innych systemów).

Następnie, w odniesieniu do ludzi, używają kilku systemów w bazie 5, zwanych systemami quinary . W rzeczywistości większość z tych układów ma dwie podstawy, druga to 2 lub 4, naprzemiennie z bazą 5, co czyni je równoważnymi podstawie 10 (dziesiętna) lub podstawie 20 (pionowa). Zgadnij skąd to pochodzi :)

Te systemy o podwójnej bazie nazywane są systemami dwumiesięcznymi lub kwadrynicznymi. Rzadko stosuje się czysty quinary.

Cyfry rzymskie mogą być postrzegane jako system dwucyfrowy (co jest wskazówką, jak z nimi wykonywać arytmetykę). Abakus chiński i japoński używają dwufunkcyjny. Kwadri-quinary był używany przez Majów.

Przyczyny korzystania z systemu są prawdopodobnie liczne. Jednym z dobrych powodów jest to, że był to pierwszy projekt lokalny i ludzie są do niego przyzwyczajeni. Na przykład można się zastanawiać, dlaczego osoby anglojęzyczne nadal używają niezwykle dziwnego systemu numeracji, próbując zmierzyć odległości. Można argumentować, że jest to kwestia wielu jednostek, a nie numeracji, ale to bardzo słaba uwaga. Liczby są używane głównie do mierzenia rzeczy.

Innymi przyczynami utrzymania systemu jest wygoda w danym kontekście. Może istnieć kompromis między liczbą różnych symboli lub pozycji na liczydle, a liczbą pojawiających się symboli wymaganych do utworzenia wystarczająco dużych liczb. Baza 2 działa z 2 odrębnymi symbolami, ale ma wiele wystąpień, które mogą być niewygodne dla przedstawienia materiału. Podstawowa podstawa 20 wymagałaby dwudziestu symboli i bardzo dużych tabliczek mnożenia, których ludzie nie zapamiętaliby. Ale system dwumiesięczny lub czterokwadowy jest o wiele łatwiejszy do zarządzania, szczególnie w celu zbudowania liczydła. Czysty układ quinary prawdopodobnie byłby jeszcze lepszy, ale jest sprzeczny z nawykami i intuicją opartą na fizjologii. I zawsze miło jest móc liczyć palcami, gdy nie wiemy nic lepszego.

Ale to nie wszystko.

Jednym z bardzo starych i bardzo powszechnych systemów jest system płciowy używany do pomiaru czasu i kątów (ale wiemy, że są one powiązane, poprzez rotację Ziemi). Używa bazy 60, ale nie używa 60 symboli, ponieważ jest to zdecydowanie za dużo. Opiera się więc na innym systemie do reprezentowania swoich synbolów (np. Systemie dziesiętnym).

Okrąg można podzielić na 6 części odpowiadających kątom 60 stopni, które najłatwiej jest zbudować z trójkątów równobocznych. Następnie Każdy stopień to 60 minut kątowych, każdy podzielony na 60 sekund.

Według Wikipedii

Pochodzi ze starożytnych Sumerów w 3. tysiącleciu pne, został przekazany starożytnym Babilończykom i nadal jest używany - w zmodyfikowanej formie - do pomiaru czasu, kątów i współrzędnych geograficznych.

Biorąc pod uwagę pochodzenie, był to dość wygodny system w czasach, gdy matematyka prawie nie wchodziła w niemowlęctwo. Kąt 60⁰ jest nie tylko łatwy do narysowania, ale 60 ma wiele czynników, dzięki czemu pozwala na dzielenie na wiele liczb całkowitych, bez reszty.

12×5=60

Ale są też inne sposoby na osiągnięcie 60 lat, takie jak witalno-trójskładnikowy system Babilończyków .

Dlaczego nadal korzystamy z systemu płciowego. Myślę, że jesteśmy do tego przyzwyczajeni i możemy mieć zbyt wiele sprzecznych problemów, aby zmiana była w pełni uzasadniona.

Warto zauważyć, że istnieje wiele wzajemnych zależności między systemami numeracji a systemami jednostek. Ale należy się tego spodziewać, ponieważ miarą jest duża rola liczb. Jest to zauważalne w przeciwieństwie do metryki dziesiętnej i binarnej dla wielkości pamięci .

Babou
źródło
3
Być może dlatego, że tytuł mówi „Dlaczego szesnastkowy, ósemkowy lub szesnastkowy?”
Fizz
1
@RespawnedFluff Dobra uwaga. W takim razie moje przesłuchanie może obejmować pytanie. Nie chciałem powiedzieć, że inne odpowiedzi są nieciekawe. Ale szerszy widok lepiej pokazuje możliwe motywacje dla różnych systemów. Obsługuje niektóre z udzielonych odpowiedzi. Zasadniczo motywacjami są nawyk i wygoda. Ale wygoda zależy w dużym stopniu od kontekstu. Dychotomia wielkości pamięci jest niedawno utworzona i ilustruje sens.
babou
2
Zwięzłość jest cnotą, to pytanie nie wymaga 1000-prozowej prozy, ani też większość z nich jest bardzo istotna. Nie udało ci się również odpowiedzieć na pytanie.
dtech
„kiedy ludzie liczą w tysiącach ..., to wciąż jest uważane za dziesiętne, ponieważ są to potęgi 10. Więc można się zastanawiać, dlaczego liczby ósemkowe lub szesnastkowe nie powinny być uważane za odmianę binarną.” Ponieważ tysiące są po prostu pominięciem cyfry, zwykle 0. Różni się to od base-1000, który użyłby 1000 różnych symboli dla każdej liczby 0-999.
dtech
1
@dtech Dziękuję. Zapomniałem wprowadzenia lub streszczenia, które zwykle mam przed moimi odpowiedziami. Doprowadziło mnie to do ważnej kwestii, najwyraźniej ignorowanej przez inne odpowiedzi. Nie każde słowo binarne ma postać liczby. Próba uzyskania szerszego widoku pomaga znaleźć problemy.
babou
-1

Komputery rozumieją liczby binarne, a w systemie binarnym wagi liczb mają potęgę 2, dlatego liczba cyfr reprezentujących liczbę może być duża w zależności od liczby.

Powiedzmy, że 64 w systemie dziesiętnym może być reprezentowane przez 7 bitów, podczas gdy do reprezentowania liczby 5000 potrzebujemy 13 bitów.

System liczb ósemkowych i szesnastkowych to zwarty sposób reprezentowania liczby binarnej.

Mayank Kumar Gupta
źródło
2
Jak brzmi ta odpowiedź [What advantage is there to using a base different from ten or (a power of) two?]- lub jak inaczej interpretujesz Why not stick to [bases 2 and 10]??
Greybeard