Jeden doplněk

The něčí doplněk , i ( b -1) -complement , je aritmetický operace, která se většinou používá v duálním systému . Všechny číslice nebo bitů na binární čísla (binární číslo) jsou vedené, to znamená: 0to se stává off 1a vice versa. Výsledkem je, že každá číslice binárního čísla a její odpovídající číslice něčího doplňku se „ 1doplňují“, což dává operaci její název. Takže pokud -digit binární číslo, pak jeho něčí doplněk

odčítání , ve kterém nejsou žádné carry- do dalšího období . Operace je také známá jako bitová negace a operátor je v různých programovacích jazycích~ označován jako vlnovka . Číslo je interpretováno jako bitový řetězec .

Jednou aplikací vlastního doplňku je současná manipulace s jednotlivými bity v bitovém řetězci. Například pokud chcete Zahlsmazat všechny bity v bitovém řetězci, Maskekteré jsou nastaveny v bitovém řetězci , můžete ANDZahl s něčím doplňkem Maskebitově , v C syntaxiZahl &= ~Maske;

Další aplikací je reprezentace doplňku , technika pro binární reprezentaci záporných celých čísel . Dá se to snadno popsat - doplňkem reprezentace záporného čísla je normální binární vyjádření jeho množství - implementace aritmetické jednotky pro takto reprezentovaná čísla je však těžkopádná. Má pouze výhody oproti reprezentaci dvou doplňků , která je dnes běžná, v případě dělení, které je i tak obvykle pomalé, v násobení s dvakrát dlouhým výsledkem a ve vytváření jednoduchých kontrolních součtů .

Reprezentace doplňku

Porovnání zastoupení nibble (4 bity) jako nepodepsané hodnoty (0), jako množství a znaménko (BuV), v komplementu člověka (1'S) a ve dvou komplementu (2'S)
Uložená hodnota Desetinný výklad
Dopoledne Hex 0 BuV 1 2
0000 0 0 0 0 0
0001 1 1 1 1 1
0010 2 2 2 2 2
0011 3 3 3 3 3
0100 4. místo 4. místo 4. místo 4. místo 4. místo
0101 5 5 5 5 5
0110 6. 6. 6. 6. 6.
0111 7. 7. 7. 7. 7.
1000 8. 8. −0 -7 -8
1001 9 9 -1 -6 -7
1010 A. 10 -2 -5 -6
1011 B. 11 -3 -4 -5
1100 C. 12 -4 -3 -4
1101 D. 13 -5 -2 -3
1110 E. 14 -6 -1 -2
1111 F. 15 -7 −0 -1

Binární kódování celých čísel se znaménkem má obvykle následující vlastnosti:

Když je nastaven nejvýznamnější bit, existují rozdíly. V tomto případě je částka získána vytvořením komplementu v reprezentaci komplementu. Například 1010úvodní se ukáže 1být záporný a částka je ~1010tedy 0101= 5. Tato definice má za následek následující další vlastnosti reprezentace doplňku:

  • existují dvě reprezentace pro číslo 0, +0 = 0000a −0 = 1111,
  • kladná a záporná čísla dosahují symetricky až do stejné výše, zde 7 = 0111.

Zde jsou uvedeny příklady pro délku slova n = 4 bity. Pro 8 a 16 bitů jsou maximální hodnoty obecně 127 a 32767

Aritmetické operace a problémy

Nejjednodušší aritmetickou operací v reprezentaci komplementu je aritmetická negace (unární -operátor). Je pouze nutné vytvořit bitový doplněk. To umožňuje odečítání (binární -operátor) zpětně sledovat přímo k sčítání: 3 - 4 = 3 + (−4). Chcete-li provést toto přidání, sčítač vytvořený pro nepodepsaná čísla dává správný výsledek:

           1011 (−4)
        +  0011 (+3)
Überträge 0011
          —————
        =  1110 (−1)

Nevýhodou reprezentace komplementu je řešení případu, kdy operace překročí nulu. Příklad: Při výpočtu −4 + ​​6 = +2 se po jednoduchém přidání binárního čísla reprezentací komplementu dvou lidí nejprve objeví nesprávný mezivýsledek:

 −4 + 6 = +2 führt zu
           1011
        +  0110
Überträge 1110
          —————
        =  0001 (Zwischenergebnis)

0001Kandidoval na +1, ne pro +2. Aby se zobrazil správný výsledek, musí se vyhodnotit přenos zleva (zde 1) a v případě potřeby se musí výsledek zvýšit o 1. Jinými slovy, přenos musí být přidán k mezivýsledku:

          0001 (Zwischenergebnis)
       +     1 (Übertrag der vorhergehenden Operation)
         —————
       =  0010

V prvním příkladu výše je přenos 0, takže mezivýsledek tam již odpovídá konečnému výsledku.

Další nevýhodou je vznik nadbytečnosti : Pro nulu existují dvě reprezentace: 0000(+0) a 1111(−0), viz znaménko nula . Na jedné straně se s omezeným počtem bitů nepoužívá maximální rozsah množství čísel, která lze reprezentovat. Rozsah čísel, který lze reprezentovat, je snížen o 1; protože nula je přítomna dvakrát, datové slovo pro rozsah čísel je vynecháno. Reprezentace všech ostatních čísel však zůstává jednoznačná. V tomto příkladu se 4 bity  je reprezentováno pouze 15 různých čísel (od -7 do 7) s 2 4 = 16 různými bitovými kombinacemi.

Oběma popsaným problémům se při kódování čísel v reprezentaci komplementu těchto dvou předejde.

Přidání převoditelnosti zlepšuje citlivost jednoduchého kontrolního součtu vícenásobných bitových chyb. Například kontrolní součet s modulo aritmetickým ignorováním nese by neznamenal chybu přenosu s pravděpodobností 50%, pokud je často nejvýznamnější bit nesprávný, např. B. konstantní nula. TCP používá kontrolní součet v něčí doplňková aritmetika, který nemá tento nedostatek a jehož efektivní výpočet na hardware bez něčí doplňková aritmetickou jednotkou je popsána v RFC 1071 .

Zobecnění na b -adické systémy

V systému b -adic se standardní sadou číslic odpovídá binární inverze na číslici aritmetickému pravidlu . V desítkové soustavě s b = 10 musí být každá číslice odečtena od 9. Někteří autoři pak hovoří o komplementu devítky a obecně o komplementu ( b −1). Například devítkovým doplňkem je desetimístné desetinné číslo456dez

Takže pokud -digit číslo decimální, pak devíti doplňkem

odčítání , ve které nese nevyskytují.

webové odkazy

Individuální důkazy

  1. ^ Helmut Herold: Základy informatiky . Pearson Studium, Mnichov 2007, ISBN 978-3-8273-7305-2 , s. 59
  2. ^ Herbert Schneider-Obermann: Základní znalost elektrických, digitálních a informačních technologií . 1. vydání. Friedr. Vieweg & Sohn Verlag / GWV Fachverlage, Wiesbaden 2006, ISBN 978-3-528-03979-0 . Tabulka 2.1: Záporná čísla v duálním systému v části 2.1.5 Zastoupení záporných čísel v duálním systému
  3. RFC 1071: Výpočet internetového kontrolního součtu
  4. Neunerkomplement atrechnerlexikon.de; Citováno 6. dubna 2015.