Skośny system liczb binarnych
Skośny binarny system liczbowy to niestandardowy pozycyjny system liczbowy , w którym n -ta cyfra wnosi wartość razy cyfra (cyfry są indeksowane od 0) zamiast razy, jak to ma miejsce w systemie binarnym . Każda cyfra ma wartość 0, 1 lub 2. Liczba może mieć wiele skośnych reprezentacji binarnych. Na przykład liczbę dziesiętną 15 można zapisać jako 1000, 201 i 122. Każdą liczbę można zapisać jednoznacznie w kanonicznej postaci binarnej skośnej, w której występuje tylko co najwyżej jedno wystąpienie cyfry 2, która musi być najmniej znaczącą cyfrą różną od zera. W tym przypadku 15 jest zapisane kanonicznie jako 1000.
Przykłady
Kanoniczne binarne reprezentacje skośne liczb od 0 do 15 przedstawiono w poniższej tabeli:
Dziesiętny | Dwójkowy | Pochyl binarny | Potrójny |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 10 | 10 |
4 | 100 | 11 | 11 |
5 | 101 | 12 | 12 |
6 | 110 | 20 | 20 |
7 | 111 | 100 | 21 |
8 | 1000 | 101 | 22 |
9 | 1001 | 102 | 100 |
10 | 1010 | 110 | 101 |
11 | 1011 | 111 | 102 |
12 | 1100 | 112 | 110 |
13 | 1101 | 120 | 111 |
14 | 1110 | 200 | 112 |
15 | 1111 | 1000 | 120 |
Operacje arytmetyczne
Zaletą skośnego binarnego jest to, że każda operacja inkrementacji może być wykonana z co najwyżej jedną operacją przenoszenia . Wykorzystuje to fakt, że . Zwiększanie skośnej liczby binarnej odbywa się poprzez ustawienie jedynej dwójki na zero i zwiększenie następnej cyfry od zera do jednego lub od jednego do dwóch. Gdy liczby są reprezentowane przy użyciu formy kodowania długości serii jako połączone listy cyfr niezerowych, inkrementacja i dekrementacja mogą być wykonywane w stałym czasie.
Inne operacje arytmetyczne mogą być wykonywane przez przełączanie między skośną reprezentacją binarną a reprezentacją binarną.
Od skośnej reprezentacji binarnej do reprezentacji binarnej
pomocą pętli, obliczając kolejne wartości i dodając ją raz lub dwa razy dla każdego tak, że ta to odpowiednio 1 lub 2. Podana jest teraz bardziej wydajna metoda, z reprezentacją tylko bitową i jednym odejmowaniem.
Skośna liczba binarna postaci bez 2 i z jest równa liczbie binarnej minus . Niech cyfrę powtórzoną . Skośna liczba binarna formularza z 1s jest równe liczba binarna minus .
Od reprezentacji binarnej do skośnej reprezentacji binarnej
Podobnie jak w poprzedniej sekcji, liczba binarna postaci z równa się skośnej liczbie binarnej b plus . Zauważ że ponieważ dodawanie nie jest zdefiniowane, dodanie zwiększeniu liczby razy. Jednak jest ograniczony logarytmem, przyrost zajmuje stały czas. Stąd przekształcenie liczby binarnej w liczbę binarną skośną przebiega w czasie liniowo względem długości liczby.
Aplikacje
Skośne liczby binarne zostały opracowane przez Eugene'a Myersa w 1983 r. Dla czysto funkcjonalnej struktury danych , która umożliwia operacje na abstrakcyjnym typie danych stosu , a także umożliwia wydajne indeksowanie sekwencji elementów stosu. Zostały one później zastosowane do skośnych stert dwumianowych , wariantu stert dwumianowych , które obsługują operacje wstawiania w najgorszym przypadku w stałym czasie.