Pochyl system liczb binarnych - Skew binary number system
Skośny system dwójkowy jest niestandardowy pozycyjnym systemie liczbowym , w którym n p cyfrowy przyczynia się wartość czasu cyfra (cyfry są indeksowane od 0) zamiast razy, jak w formacie binarnym . Każda cyfra ma wartość 0, 1 lub 2. Liczba może mieć wiele skośnych reprezentacji binarnych. Na przykład liczba dziesiętna 15 może być zapisana jako 1000, 201 i 122. Każda liczba może być zapisana jednoznacznie w skośnej binarnej postaci kanonicznej, gdzie występuje tylko co najwyżej jedno wystąpienie cyfry 2, która musi być najmniej znaczącą cyfrą niezerową. W tym przypadku 15 zapisuje się kanonicznie jako 1000.
Przykłady
Kanoniczne skośne reprezentacje binarne liczb od 0 do 15 pokazano w poniższej tabeli:
| Dziesiętny | Dwójkowy | Pochylić 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 za pomocą co najwyżej jednej operacji 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 jednego do dwóch. Gdy liczby są reprezentowane przy użyciu formy kodowania długości ciągu 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
Biorąc pod uwagę skośną liczbę binarną, jej wartość można obliczyć za pomocą pętli, obliczając kolejne wartości i dodając je raz lub dwa razy dla każdego tak, że cyfra wynosi odpowiednio 1 lub 2. Podana jest teraz bardziej wydajna metoda, z tylko reprezentacją bitową i jednym odejmowaniem.
Skośna liczba binarna w postaci bez 2 iz jedynkami jest równa liczbie binarnej minus . Niech reprezentuje cyfrę powtórzone razy. Skośna liczba binarna postaci z jedynkami jest równa liczbie binarnej minus .
Od reprezentacji binarnej do skośnej reprezentacji binarnej
Podobnie jak w poprzedniej sekcji, liczba binarna postaci z jedynkami jest równa skośnej liczbie binarnej plus . Zauważ, że ponieważ dodawanie nie jest zdefiniowane, dodawanie odpowiada zwiększaniu liczby razy. Jest jednak ograniczony logarytmem, a inkrementacja trwa stały czas. Stąd przekształcenie liczby binarnej w ukośną liczbę binarną przebiega w czasie liniowo wzdłuż długości liczby.
Aplikacje
Skośne liczby binarne zostały opracowane przez Eugene'a Myersa w 1983 roku dla czysto funkcjonalnej struktury danych, która umożliwia operacje typu abstrakcyjnego danych stosu, a także umożliwia wydajne indeksowanie sekwencji elementów stosu. Zostały one później zastosowane do pochylenia stert dwumianowych , wariantu stert dwumianowych, które obsługują operacje wstawiania najgorszego przypadku w czasie stałym.