Aditivní kódování

kódování

Aditivní kódování (také kódování s posunutou nulou) je označení pro způsob, kterým jsou kódovány některé datové typy pro reprezentaci celých čísel. Je alternativou k jiným integerovým datovým typům podporujícím záporná čísla, například k dvojkovému doplňku. Záporná čísla jsou v aditivním kódování ukládána s přičtením takové konstanty, aby nejnižší reprezentovatelné záporné číslo odpovídalo nule, a následně je využita obvyklá metoda reprezentace nezáporných čísel.

Hodnota této konstanty, označovaná také posun (případně ofset nebo anglicky bias), je pro datové typy o n bitech volena obvykle , tedy v dvojkovém zápise odpovídá nule zápis s nejvýznamnějším bitem jedničkovým a ostatními nulovými a největšímu reprezentovatelnému číslu odpovídá zápis se samými jedničkami. Při této volbě je snadný převod mezi aditivním kódováním a dvojkovým doplňkem změnou nejvýznamnějšího bitu.

Mezi výhody aditivního kódování patří skutečnost, že posun kromě slučitelnosti s sčítáním a odčítáním také zachovává uspořádání, tedy pro vyhodnocení nerovnosti čísel v aditivní notaci lze přímo použít srovnávání naprogramované pro nezáporná čísla v obvyklém dvojkovém kódování.

Historicky významným příkladem aditivního kódování je Stibitzův kód používaný v historických počítačích, který je na čtyřech bitech s posunem tři. Aktuálním případem používání jsou mnohé formáty čísel s pohyblivou řádovou čárkou, kde je aditivní kódování používáno pro uložení exponentu: Takto ukládá exponent standard IEEE 754.

Následující tabulka uvádí příklad pro čtyřbitová čísla:

Desítkový zápis Aditivní kódování s posunem 8 Dvojkový doplněk
7 1111 0111
6 1110 0110
5 1101 0101
4 1100 0100
3 1011 0011
2 1010 0010
1 1001 0001
0 1000 0000
−1 0111 1111
−2 0110 1110
−3 0101 1101
−4 0100 1100
−5 0011 1011
−6 0010 1010
−7 0001 1001
−8 0000 1000

Reference editovat

V tomto článku byl použit překlad textu z článku Offset binary na anglické Wikipedii.