ósemkowy - Octal

Systemy liczbowe , bity i kod Graya
klątwa grudzień październik 3 2 1 0 krok
0 hex 00 gru 00 paź 0 0 0 0 g0
1 heks 01 grudnia 01 paź 0 0 0 1 h1
2 heksa 02 grudnia 02 października 0 0 1 0 J3
3 heks 03 grudnia 03 października 0 0 1 1 i2
4 heksa 04 grudnia 04 października 0 1 0 0 n7
5 hex 05 grudnia 05 października 0 1 0 1 m6
6 hex 06 grudnia 06 października 0 1 1 0 k4
7 hex 07 grudnia 07 października 0 1 1 1 ja5
8 hex 08 grudnia 10 października 1 0 0 0 vF
9 hex 09 grudnia 11 października 1 0 0 1 tymi
hex 10 grudnia 12 października 1 0 1 0 sC
B hex 11 grudnia 13 października 1 0 1 1 TD
C szesnastkowy 12 grudnia 14 października 1 1 0 0 o8
D hex 13 grudnia 15 października 1 1 0 1 P9
E heks 14 grudnia 16 października 1 1 1 0 rb
F heks 15 grudnia 17 października 1 1 1 1 QA

System liczb ósemkowych , lub w skrócie oct , jest systemem liczbowym o podstawie -8 i wykorzystuje cyfry od 0 do 7, co oznacza, że ​​10 oznacza 8 w systemie dziesiętnym, a 100 oznacza 64 w systemie dziesiętnym. Jednak angielski używa systemu liczbowego o podstawie 10 , więc prawdziwy system ósemkowy może używać innego języka, aby uniknąć pomyłek z systemem dziesiętnym.

W systemie dziesiętnym każde miejsce jest potęgą dziesiątki . Na przykład:

W systemie ósemkowym każde miejsce jest potęgą ósemki. Na przykład:

Wykonując powyższe obliczenia w znanym systemie dziesiętnym, widzimy, dlaczego 112 w systemie ósemkowym jest równe 64+8+2 = 74 w systemie dziesiętnym.

Liczby ósemkowe można łatwo przekonwertować z reprezentacji binarnych (podobnie do czwartorzędowego systemu liczbowego ), grupując kolejne cyfry binarne w grupy po trzy (zaczynając od prawej, dla liczb całkowitych). Na przykład reprezentacja binarna dla dziesiętnego 74 to 1001010. Po lewej stronie można dodać dwa zera: (00)1 001 010 , odpowiadające cyfrom ósemkowym 1 1 2 , co daje reprezentację ósemkową 112.

Tabliczka mnożenia ósemkowego
× 1 2 3 4 5 6 7 10
1 1 2 3 4 5 6 7 10
2 2 4 6 10 12 14 16 20
3 3 6 11 14 17 22 25 30
4 4 10 14 20 24 30 34 40
5 5 12 17 24 31 36 43 50
6 6 14 22 30 36 44 52 60
7 7 16 25 34 43 52 61 70
10 10 20 30 40 50 60 70 100

Stosowanie

Przez rdzennych Amerykanów

  • Język Yuki w Kalifornii ma system ósemkowy, ponieważ mówcy liczą używając przestrzeni między palcami, a nie samych palców.
  • W Pamean językach w Meksyku posiada również system ósemkowy, ponieważ ich głośniki liczyć na kostkach z zamkniętej pięści.

przez Europejczyków

  • To było zasugerowane , że odbudowany Proto-indoeuropejski (SROKA) słowo dla "dziewięć" może być spokrewniony z SROKIEM słowem dla "nowego". Na tej podstawie niektórzy spekulowali, że proto-Indoeuropejczycy używali systemu ósemkowego, chociaż dowody na to są skąpe.
  • W 1668 r. John Wilkins w Esej ku prawdziwemu charakterowi i językowi filozoficznemu zaproponował użycie podstawy 8 zamiast 10 „ponieważ sposób dychotomii lub dwudzielności jest najbardziej naturalnym i najłatwiejszym rodzajem podziału, ta liczba jest zdolna do tego w dół do zjednoczenia”.
  • W 1716 r. król Szwecji Karol XII poprosił Emanuela Swedenborga o opracowanie systemu liczbowego opartego na 64 zamiast 10. Swedenborg argumentował jednak, że dla osób o mniejszej inteligencji niż król tak duża baza byłaby zbyt trudna i zamiast tego zaproponował 8 jako bazę . W 1718 Swedenborg napisał (ale nie opublikował) rękopis: „En ny rekenkonst som om vexlas wid Thalet 8 i stelle then wanliga wid Thalet 10” („Nowa arytmetyka (lub sztuka liczenia), która zmienia się przy liczbie 8 zamiast zwykły pod numerem 10”). Liczby 1-7 są tam oznaczane spółgłoskami l, s, n, m, t, f, u (v), a zero samogłoską o. Zatem 8 = „lo”, 16 = „tak”, 24 = „nie”, 64 = „loo”, 512 = „looo” itd. Liczby z kolejnymi spółgłoskami są wymawiane z samogłoskami pomiędzy zgodnie ze specjalną zasadą.
  • Pisząc pod pseudonimem „Hirossa Ap-Iccim” w The Gentleman's Magazine (Londyn) w lipcu 1745 r., Hugh Jones zaproponował system ósemkowy dla brytyjskich monet, wag i miar. „Zważywszy, że rozum i wygoda wskazują nam jednolity wzorzec dla wszystkich ilości; który będę nazywał wzorcem gruzińskim ; a to tylko podzielenie każdej liczby całkowitej w każdym gatunku na osiem równych części, a każdą część ponownie na 8 rzeczywistych lub urojonych cząstek, tak dalece, jak jest to konieczne. Bo wszystkie narody liczą się powszechnie przez dziesiątki (pierwotnie spowodowane liczbą cyfr na obu rękach), ale 8 jest o wiele bardziej kompletną i pojemną liczbą, ponieważ jest podzielna na połówki, ćwiartki i pół ćwiartki (lub jednostki) bez ułamka, którego podpodział dziesiąty jest niemożliwy…”. W późniejszym traktacie o obliczaniu oktawowym (1753) Jones stwierdził: „Arytmetyka Oktawów wydaje się najbardziej zgodna z naturą rzeczy i dlatego można ją nazwać Naturalna arytmetyka w przeciwieństwie do tej, która jest obecnie w użyciu, przez dziesięciolecia; która może być uznana za sztuczną arytmetykę.
  • W 1801 roku James Anderson skrytykował Francuzów za oparcie systemu metrycznego na arytmetyce dziesiętnej. Zaproponował podstawę 8, dla której ukuł termin ósemkowy . Jego praca była pomyślana jako matematyka rekreacyjna, ale zasugerował czysto ósemkowy system wag i miar i zauważył, że istniejący system jednostek angielskich był już, w niezwykłym stopniu, systemem ósemkowym.
  • W połowie 19 wieku, Alfred B. Taylor stwierdził, że „nasz octonary [base 8] radix jest więc ponad wszelką porównania” najlepsza możliwa jednym „dla systemu arytmetycznego.” Propozycja zawierała zapis graficzny dla cyfr i nowe nazwy dla liczb, sugerując, że powinniśmy liczyć „ un , du , the , fo , pa , se , ki , unty , unty-un , unty-du ” i tak dalej, z kolejnych wielokrotności ośmiu nazwie " uwolnią , cła , thety , foty , Paty , Sety , Kity i Under ". Na przykład liczba 65 (101 w systemie ósemkowym) zostanie wypowiedziana w systemie oktonowym jako under-un . Taylor opublikował również część prac Swedenborga na temat ósemkowej jako dodatek do wyżej cytowanych publikacji.

W komputerach

Octal stał się szeroko stosowany w komputerach, gdy systemy takie jak UNIVAC 1050 , PDP-8 , ICL 1900 i komputery mainframe IBM wykorzystywały słowa 6-bitowe , 12-bitowe , 24-bitowe lub 36-bitowe . Oktal był idealnym skrótem binarnym dla tych maszyn, ponieważ ich wielkość słowa jest podzielna przez trzy (każda cyfra ósemkowa reprezentuje trzy cyfry binarne). Tak więc dwie, cztery, osiem lub dwanaście cyfr mogą zwięźle wyświetlać całe słowo maszynowe . Obniża również koszty, pozwalając na używanie lamp Nixie , wyświetlaczy siedmiosegmentowych i kalkulatorów na konsolach operatora, gdzie wyświetlacze binarne były zbyt skomplikowane do użycia, wyświetlacze dziesiętne wymagały złożonego sprzętu do konwersji pierwiastków, a wyświetlacze szesnastkowe do wyświetlania większej liczby cyfr .

Wszystkie współczesne platformy obliczeniowe używają jednak słów 16-, 32- lub 64-bitowych, podzielonych dalej na bajty ośmiobitowe . W takich systemach wymagane byłyby trzy cyfry ósemkowe na bajt, przy czym najbardziej znacząca cyfra ósemkowa reprezentuje dwie cyfry binarne (plus jeden bit następnego znaczącego bajtu, jeśli występuje). Reprezentacja ósemkowa 16-bitowego słowa wymaga 6 cyfr, ale najbardziej znacząca cyfra ósemkowa reprezentuje (dość nieelegancko) tylko jeden bit (0 lub 1). Ta reprezentacja nie daje możliwości łatwego odczytania najbardziej znaczącego bajtu, ponieważ jest rozmazany na czterech cyfrach ósemkowych. Dlatego szesnastkowy jest dziś częściej używany w językach programowania, ponieważ dwie cyfry szesnastkowe dokładnie określają jeden bajt. Niektóre platformy z rozmiarem słowa potęgi dwóch nadal mają podsłowa instrukcji, które są łatwiejsze do zrozumienia, jeśli są wyświetlane ósemkowo; obejmuje to rodzinę PDP-11 i Motorola 68000 . Do tej kategorii należy również współczesna, wszechobecna architektura x86 , ale ósemkowa jest rzadko używana na tej platformie, chociaż pewne właściwości binarnego kodowania opkodów stają się bardziej widoczne, gdy są wyświetlane w postaci ósemkowej, np. bajt ModRM, który dzieli się na pola 2, 3 i 3 bitowe, więc ósemkowe może być przydatne w opisie tych kodowań. Zanim pojawiły się asemblery , niektórzy programiści ręcznie kodowali programy w formacie ósemkowym; na przykład Dick Whipple i John Arnold napisali Tiny BASIC Extended bezpośrednio w kodzie maszynowym, używając ósemkowej.

Octal jest czasami używany w obliczeniach zamiast szesnastkowych, być może najczęściej w dzisiejszych czasach w połączeniu z uprawnieniami do plików w systemach Unix (patrz chmod ). Ma tę zaletę, że nie wymaga żadnych dodatkowych symboli jako cyfr (system szesnastkowy ma podstawę 16 i dlatego wymaga sześciu dodatkowych symboli poza 0-9). Jest również używany do wyświetlaczy cyfrowych.

W językach programowania literały ósemkowe są zwykle identyfikowane za pomocą różnych przedrostków , w tym cyfry 0, liter olub q, kombinacji cyfra-litera 0olub symbolu &lub $. W konwencji Motorola , cyfry ósemkowe są poprzedzone @, podczas gdy mała (kapitał) lub listem olub qjest dodawana jako Postfix następstwie konwencji Intel . W Concurrent DOS , Multiuser DOS i REAL/32 , a także w DOS Plus i DR-DOS różne zmienne środowiskowe, takie jak $CLS , $ON , $OFF , $HEADER lub $FOOTER obsługują \nnnnotację ósemkową, a DR-DOS DEBUG wykorzystuje \aby poprzedzać również liczby ósemkowe.

Na przykład literał 73 (podstawa 8) może być reprezentowany jako 073, o73, q73, 0o73, \73, @73, &73, $73lub 73ow różnych językach.

Nowsze języki zrezygnowały z prefiksu 0, ponieważ liczby dziesiętne są często reprezentowane przez wiodące zera. Przedrostek qzostał wprowadzony, aby uniknąć opomylenia przedrostka z zerem, podczas gdy przedrostek 0ozostał wprowadzony, aby uniknąć rozpoczynania literału numerycznego od znaku alfabetycznego (jak olub q), ponieważ może to spowodować pomylenie literału z nazwą zmiennej. Prefiks jest 0orównież zgodny z modelem ustawionym przez prefiks 0xużywany dla literałów szesnastkowych w języku C ; jest obsługiwany przez Haskell , OCaml , Python od wersji 3.0, Raku , Ruby , Tcl od wersji 9, PHP od wersji 8.1 i ma być obsługiwany przez ECMAScript 6 (przedrostek 0pierwotnie oznaczał podstawę 8 w JavaScript, ale może powodować zamieszanie, dlatego zostało odrzucone w ECMAScript 3 i porzucone w ECMAScript 5).

Liczby ósemkowe używane w niektórych językach programowania (C, Perl , PostScript …) do tekstowych/graficznych reprezentacji ciągów bajtowych, gdy niektóre wartości bajtowe (niereprezentowane na stronie kodowej, niegraficzne, mające specjalne znaczenie w bieżącym kontekście lub w inny sposób niepożądane) muszą być uciekł jako \nnn. Reprezentacja ósemkowa może być szczególnie przydatna w przypadku bajtów innych niż ASCII UTF-8 , które kodują grupy po 6 bitów i gdzie każdy bajt początkowy ma wartość ósemkową, \3nna każdy bajt kontynuacji ma wartość ósemkową \2nn.

Octal był również używany do obliczeń zmiennoprzecinkowych w Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) i Burroughs B7700 (1972).

W lotnictwie

Transpondery w samolotach przesyłają kod , wyrażony jako liczba czterocyfrowa, podczas odpytywania przez radar naziemny. Ten kod służy do rozróżniania różnych samolotów na ekranie radaru.

Konwersja między bazami

Konwersja dziesiętna na ósemkową

Metoda kolejnego dzielenia Euklidesa przez 8

Aby zamienić liczby całkowite na ósemkowe, podziel pierwotną liczbę przez największą możliwą potęgę 8, a resztę podziel przez kolejno mniejsze potęgi 8, aż do uzyskania potęgi 1. Reprezentację ósemkową tworzą ilorazy zapisane w kolejności generowanej przez algorytm. Na przykład, aby przekonwertować 125 10 na ósemkowe:

125 = 8 2 × 1 + 61
61 = 8 1 × 7 + 5
5 = 8 0 × 5 + 0

Zatem 125 10 = 175 8 .

Inny przykład:

900 = 8 3 × 1 + 388
388 = 8 2 × 6 + 4
4 = 8 1 × 0 + 4
4 = 8 0 × 4 + 0

Zatem 900 10 = 1604 8 .

Metoda kolejnego mnożenia przez 8

Aby przekonwertować ułamek dziesiętny na ósemkowy, pomnóż przez 8; część całkowita wyniku jest pierwszą cyfrą ułamka ósemkowego. Powtarzaj proces z ułamkową częścią wyniku, aż będzie zerowa lub mieści się w dopuszczalnych granicach błędu.

Przykład: Konwertuj 0.1640625 na ósemkowe:

0,1640625 × 8 = 1,3125 = 1 + 0,3125
0,3125 × 8 = 2,5 = 2 + 0,5
0,5 × 8 = 4,0 = 4 + 0

Dlatego 0,1640625 10 = 0,124 8 .

Te dwie metody można łączyć, aby obsługiwać liczby dziesiętne z częściami całkowitymi i ułamkowymi, używając pierwszej na części całkowitej, a drugiej na części ułamkowej.

Metoda sukcesywnego powielania

Aby przekonwertować liczby całkowite na ósemkowe, poprzedź liczbę przedrostkiem „0.”. Wykonaj następujące czynności tak długo, jak długo cyfry pozostają po prawej stronie podstawy: Podwój wartość po lewej stronie podstawy, stosując zasady ósemkowe , przesuń punkt podstawy o jedną cyfrę w prawo, a następnie umieść podwojoną wartość pod bieżącą wartość, tak aby punkty podstawy były wyrównane. Jeśli przesunięty punkt podstawy przecina cyfrę, która jest 8 lub 9, przekonwertuj ją na 0 lub 1 i dodaj przeniesienie do następnej cyfry po lewej stronie bieżącej wartości. Dodaj ósemkowo te cyfry po lewej stronie podstawy i po prostu upuść te cyfry po prawej, bez modyfikacji.

Przykład:

 0.4 9 1 8 decimal value
  +0
 ---------
   4.9 1 8
  +1 0
  --------
   6 1.1 8
  +1 4 2
  --------
   7 5 3.8
  +1 7 2 6
  --------
 1 1 4 6 6. octal value

Konwersja ósemkowa na dziesiętną

Aby przekonwertować liczbę k na liczbę dziesiętną, użyj formuły, która definiuje jej reprezentację o podstawie 8:

W tym wzorze a i jest pojedynczą cyfrą ósemkową, która jest konwertowana, gdzie i jest pozycją cyfry (licząc od 0 dla cyfry skrajnej z prawej strony).

Przykład: Konwertuj 764 8 na dziesiętny:

764 8 = 7 × 8 2 + 6 × 8 1 + 4 × 8 0 = 448 + 48 + 4 = 500 10

W przypadku dwucyfrowych liczb ósemkowych metoda ta polega na pomnożeniu cyfry wiodącej przez 8 i dodaniu drugiej cyfry w celu uzyskania sumy.

Przykład: 65 8 = 6 × 8 + 5 = 53 10

Metoda sukcesywnego powielania

Aby przekonwertować liczbę ósemkową na dziesiętną, poprzedź liczbę przedrostkiem „0.”. Wykonaj następujące czynności tak długo, jak długo cyfry pozostają po prawej stronie podstawy: Podwój wartość po lewej stronie podstawy, stosując zasady dziesiętne , przesuń punkt podstawy o jedną cyfrę w prawo, a następnie umieść podwojoną wartość pod bieżącą wartość, tak aby punkty podstawy były wyrównane. Odejmij dziesiętnie cyfry po lewej stronie podstawy i po prostu upuść te cyfry po prawej, bez modyfikacji.

Przykład:

 0.1 1 4 6 6  octal value
  -0
 -----------
   1.1 4 6 6
  -  2
  ----------
     9.4 6 6
  -  1 8
  ----------
     7 6.6 6
  -  1 5 2
  ----------
     6 1 4.6
  -  1 2 2 8
  ----------
     4 9 1 8. decimal value

Konwersja ósemkowa na binarną

Aby przekonwertować cyfrę ósemkową na binarną, zastąp każdą cyfrę ósemkową jej reprezentacją binarną.

Przykład: Konwertuj 51 8 na binarny:

5 8 = 101 2
1 8 = 001 2

Zatem 51 8 = 101 001 2 .

Konwersja binarna na ósemkową

Proces jest odwrotnością poprzedniego algorytmu. Cyfry binarne są pogrupowane trójkami, zaczynając od najmniej znaczącego bitu i idąc w lewo i w prawo. Dodaj wiodące zera (lub końcowe zera po prawej stronie przecinka dziesiętnego), aby w razie potrzeby wypełnić ostatnią grupę trzech. Następnie zastąp każde trio odpowiednią cyfrą ósemkową.

Na przykład przekonwertuj binarny 1010111100 na ósemkowy:

001 010 111 100
1 2 7 4

Dlatego 1010111100 2 = 1274 8 .

Konwertuj binarny 11100.01001 na ósemkowy:

011 100  .  010 010
3 4  .  2 2

Zatem 11100,01001 2 = 34,22 8 .

Konwersja ósemkowa na szesnastkową

Konwersja odbywa się w dwóch krokach przy użyciu binarnej jako bazy pośredniej. Ósemkowy jest konwertowany na binarny, a następnie binarny na szesnastkowy, grupując cyfry po czwórki, z których każda odpowiada cyfrze szesnastkowej.

Na przykład przekonwertuj ósemkowe 1057 na szesnastkowy:

Do binarnego:
1 0 5 7
001 000 101 111
następnie szesnastkowo:
0010 0010 1111
2 2 F

Dlatego 1057 8 = 22F 16 .

Konwersja szesnastkowa na ósemkową

Konwersja liczb szesnastkowych na ósemkowe polega na konwersji cyfr szesnastkowych na 4-bitowe wartości binarne, a następnie przegrupowaniu bitów binarnych na 3-bitowe cyfry ósemkowe.

Na przykład, aby przekonwertować 3FA5 16 :

Do binarnego:
3 F A 5
0011 1111 1010 0101
następnie ósemkowo:
0 011 111 110 100 101
0 3 7 6 4 5

Dlatego 3FA5 16 = 37645 8 .

Liczby rzeczywiste

Frakcje

Ze względu na to, że mają tylko dzielniki dwa, wiele ułamków ósemkowych ma powtarzające się cyfry, chociaż są one dość proste:

Podstawa dziesiętna
Czynniki pierwsze podstawy: 2 , 5
Czynniki pierwsze jednej poniżej podstawy: 3
Czynniki pierwsze jednej nad podstawą: 11
Inne Czynniki pierwsze: 7 13 17 19 23 29 31
Baza ósemkowa
Czynniki pierwsze podstawy: 2
Czynniki pierwsze jednego poniżej podstawy: 7
Czynniki pierwsze jednej nad podstawą: 3
Inne czynniki pierwsze: 5 13 15 21 23 27 35 37
Frakcja Czynniki
pierwsze mianownika
Reprezentacja pozycyjna Reprezentacja pozycyjna Czynniki
pierwsze mianownika
Frakcja
1/2 2 0,5 0,4 2 1/2
1/3 3 0. 3333 ... = 0. 3 0. 2525 ... = 0. 25 3 1/3
1/4 2 0,25 0,2 2 1/4
1/5 5 0,2 0. 1463 5 1/5
1/6 2 , 3 0,1 6 0,1 25 2 , 3 1/6
1/7 7 0. 142857 0. 1 7 1/7
1/8 2 0,125 0,1 2 1/10
1/9 3 0. 1 0. 07 3 1/11
1/10 2 , 5 0,1 0,0 6314 2 , 5 1/12
1/11 11 0. 09 0. 0564272135 13 1/13
1/12 2 , 3 0,08 3 0,0 52 2 , 3 1/14
1/13 13 0. 076923 0. 0473 15 1/15
1/14 2 , 7 0,0 714285 0,0 4 2 , 7 1/16
1/15 3 , 5 0,0 6 0. 0421 3 , 5 1/17
1/16 2 0,0625 0,04 2 1/20
1/17 17 0. 0588235294117647 0. 03607417 21 1/21
1/18 2 , 3 0.0 5 0.0 34 2 , 3 1/22
1/19 19 0. 052631578947368421 0. 032745 23 1/23
1/20 2 , 5 0,05 0,0 3146 2 , 5 1/24
1/21 3 , 7 0. 047619 0. 03 3 , 7 1/25
1/22 2 , 11 0.0 45 0,0 2721350564 2 , 13 1/26
1/23 23 0. 0434782608695652173913 0. 02620544131 27 1/27
1/24 2 , 3 0,041 6 0.0 25 2 , 3 1/30
1/25 5 0,04 0. 02436560507534121727 5 1/31
1/26 2 , 13 0,0 384615 0,0 2354 2 , 15 1/32
1/27 3 0. 037 0. 022755 3 1/33
1/28 2 , 7 0,03 571428 0,0 2 2 , 7 1/34
1/29 29 0. 0344827586206896551724137931 0. 0215173454106475626043236713 35 1/35
1/30 2 , 3 , 5 0,0 3 0,0 2104 2 , 3 , 5 1/36
1/31 31 0. 032258064516129 0. 02041 37 1/37
1/32 2 0,03125 0,02 2 1/40

Liczby niewymierne

Poniższa tabela przedstawia rozwinięcia niektórych powszechnych liczb niewymiernych w postaci dziesiętnej i ósemkowej.

Numer Reprezentacja pozycyjna
Dziesiętny ósemkowy
2 (długość przekątnej kwadratu jednostkowego ) 1.414 213 562 373 095 048 ... 1.3240 4746 3177 1674...
3 (długość przekątnej sześcianu jednostkowego ) 1,732 050 807 568 877 293 ... 1.5666 3656 4130 2312...
5 (długość przekątnej prostokąta 1×2 ) 2.236 067 977 499 789 696 ... 2.1706 7363 3457 7224...
φ (phi, złoty podział = (1+ 5 )/2 ) 1.618 033 988 749 894 848 ... 1.4743 3571 5627 7512...
π (pi, stosunek obwodu do średnicy koła) 3,141 592 653 589 793 238 462 643
383 279 502 884 197 169 399 375 105 ...
3.1103 7552 4210 2643...
e (podstawa logarytmu naturalnego ) 2.718 281 828 459 045 235 ... 2.5576 0521 3050 5355...

Zobacz też

Bibliografia

Zewnętrzne linki