En komputado oni povus uzi la saman metodon, reprezentante la minus-signon per speciala bito, la signuma bito. Tia reprezento nomigxas signuma-absolutvalora reprezento. Gxi havas gravan malavantagxon: Kalkulante per gxi oni devas aparte trakti negativajn kaj pozitivajn nombrojn. Ekzemple ne eblas uzi la saman algoritmon por adicii du pozitivajn aux unu pozitivan kaj unu negativan nombrojn.
Tial oni kutime uzas komplementan reprezenton, kiu uzas la diferencon al fiksa nombro M (la "komplementon gxis M") por negativigi. Obloj de M estas ignorataj en cxiuj rezultoj. Tiun nombron M oni elektas tiel, ke la komplementigo estas facile farebla. Por ekzemplo kun dekumaj nombroj ni uzu M = 100:
0 | 0 |
1 | 1 |
.. | .. |
49 | 49 |
50 | -50 |
51 | -49 |
52 | -48 |
.. | .. |
98 | -2 |
99 | -1 |
bitoj | M | plej malgranda nombro | plej granda nombro |
---|---|---|---|
16 | 65.536 | -32.768 | 32.767 |
32 | 4.294.967.296 | -2.147.483.648 | 2.147.483.647 |
64 | 18.446.744.065.519.682.688 | -9.223.372.032.759.841.344 | 9.223.372.032.759.841.343 |
Mallonge oni parolas pri komplemento gxis 2 anstataux "komplemento gxis la n-a potenco de 2". La komplemento gxis 2 estas facile kalkulebla: Oni subtrahas 1 kaj inversigas cxiujn bitojn. Ekzemplojn por n=8, do M=256, montras jena tabelo:
nombro (dekume) | interrezulto (|x| - 1) (dekume) | interrezulto (|x| - 1) (duume) | fina rezulto |
---|---|---|---|
-1 | 0 | 0000 0000 | 1111 1111 |
-2 | 1 | 0000 0001 | 1111 1110 |
-3 | 2 | 0000 0010 | 1111 1101 |
-127 | 126 | 0111 1110 | 1000 0001 |
-128 | 127 | 0111 1111 | 1000 0000 |
Videblas, ke la unua bito de cxiu negativa nombro estas 1 kaj la unua bito de cxiu pozitiva nombro estas 0. La unua bito estas do uzebla kiel signuma bito, kaj por testi la negativecon de nombro suficxas rigardi al tiu bito.
dekume | duume | ||||
---|---|---|---|---|---|
-3 + 1 = | -2 | 1111 1101 + 0000 0001 = | 1111 1110 | ||
-2 + 1 = | -1 | 1111 1110 + 0000 0001 = | 1111 1111 | ||
-1 + 1 = | 0 | 1111 1111 + 0000 0001 = | (1) 0000 0000 | *) | |
0 + 1 = | 2 | 0000 0000 + 0000 0001 = | 0000 0001 | ||
1 + 1 = | 2 | 0000 0001 + 0000 0001 = | 0000 0010 |