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 ), 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
Kategorie:Binární aritmetika