Ühe täiend

Allikas: Vikipeedia

Kahendarvu ühe täiend (ingl ones' complement) on väärtus, mis saadakse arvu kahendkujul olevate kõigi bittide ümberpööramisel (pööramisel). Nimetus "ühe täiend"[1] viitab asjaolule, et selline ümberpööratud väärtus, kui lisada originaalile, annaks alati numbri "kõik ühed" (termin "täiend" viitab sellistele vastastikku aditiivsete pöördarvude paaridele, siin mitte-0 baasarvu suhtes). See matemaatiline tehe pakub huvi eelkõige arvutiteaduses, kus sellel on erinev mõju sõltuvalt sellest, kuidas konkreetne arvuti numbreid esitab.

Kahendarvu ühe täiendi saamiseks tuleb kõigi bittide numbrid ümber pöörata. 1 -> 0 ja 0 -> 1. Näiteks numbri 0101 (5) ühe täiend oleks 1010 (-5). Numbri 0010 (2) vastav ühe täiend on 1101 (-2)

Arvutuskäik[muuda | muuda lähteteksti]

Number Binary Ühe täiend Ühe täiend number
0 0000 1111 -0
1 0001 1110 -1
2 0010 1101 -2
3 0011 1100 -3
4 0100 1011 -4
5 0101 1010 -5
6 0110 1001 -6
7 0111 1000 -7
8 1000 0111 7
9 1001 0110 6
10 1010 0101 5
11 1011 0100 4
12 1100 0011 3
13 1101 0010 2
14 1110 0001 1
15 1111 0000 0

Kahendarvude ühe täiendi liitmine toimub täpselt samamoodi nagu tavalise kahendarvu korral.

  1010  -5        0010  2      
+ 0011  3       + 0100  4      
------  --      ------  -    
  1101  -2        0110  6

Ühe täiendi korral on oluline jälgida ülekannet. Ülekande tekkimisel tuleb olemasolevale arvule juurde liita 1.

Arvude -4 + 6 ja -1 + (-3) liitmine:

  1011  -4                1110  -1
+ 0110  6               + 1100  -3
  ----  --              ------  --
1 0001  1               1 1010  -5
Kuna ülekanne on olemas siis liidame 1 juurde
  0001  1                 1010  -5
+ 0001  1               + 0001  1
 -----  -               ------  --
  0010  2                 1011  -4

Kahe positiivse või kahe negatiivse arvu liitmisel peab jälgima, et vastus piiridest välja ei lähe. Kahendsüsteemis on võimalik 4 bitiga representeerida arve 0 - 16 aga ühe täiend süsteemi kasutades representeeritakse 4 bitiga arve -7 - 7. Suurtemate arvude saamiseks tuleb kasutusele võtta rohkem bitte, nt: 8 bitti ehk 1 byte. Arvude 4 + 5 vastuseks tuleb 6, mis on vale.

  0100  4          
+ 0101  5           
------  --  
  1001  6
  
  4 + 5 != 6

Edasiarendus[muuda | muuda lähteteksti]

Ühe täiend pole arvutisüsteemides enam laialdaselt kasutusel. Kasutati seda arvutites nagu UNIVAC 1101, CDC 160, CDC 6600 ja UNIVAC 1107. Tänapäeval kasutatakse ühe täiend süsteemi veel UNIVAC 1100/2200 seerias. Uued arvutisüsteemid on üle läinud kahe täiendile. Põhjuseks võib lugeda kahe täiendi kiiremat arvutuskäiku, kuna ei pea kontrollima ülekande väärtust. Teiseks kahe täiend süsteemiga pole representeeridud + ja - 0.

Vaata ka[muuda | muuda lähteteksti]

Viited[muuda | muuda lähteteksti]

  1. Donald Knuth: The Art of Computer Programming, Volume 2: Seminumerical Algorithms, chapter 4.1