C standardı, negatif işaretli sayıları temsil etmenin özel bir yolunu zorunlu kılmaz.
Karşılaşabileceğiniz uygulamaların çoğunda, negatif işaretli tamsayılar ikisinin tamamlayıcısı olarak adlandırılır . Negatif işaretli sayıları depolamanın diğer önemli yoluna kişinin tamamlayıcısı denir .
İkisinin bir N-bit sayı tamamlayıcısı x
olarak tanımlanır 2^N - x
. Örneğin, 8-bit ikinin tamamlayıcısı 1
olan 2^8 - 1
veya 1111 1111
. 8-bit ikinin tamamlayıcısı 8
olan 2^8 - 8
ikilik sistemde olan 1111 1000
. Bu aynı zamanda uçları çevrilerek x
ve bir tane eklenerek de hesaplanabilir . Örneğin:
1 = 0000 0001
~1 = 1111 1110
~1 + 1 = 1111 1111
-1 = 1111 1111
21 = 0001 0101
~21 = 1110 1010
~21 + 1 = 1110 1011
-21 = 1110 1011
Kişinin bir N-bit sayısı x tamamlayıcısı, temel olarak tüm bitleri çevrilmiş olarak x olarak tanımlanır.
1 = 0000 0001
-1 = 1111 1110
21 = 0001 0101
-21 = 1110 1010
İki kişinin tamamlayıcısı, kişinin tamamlayıcısı karşısında birkaç avantaja sahiptir. Örneğin, iyi bir nedenden dolayı birçok insan için kafa karıştırıcı olan 'negatif sıfır' kavramına sahip değildir. Toplama, çarpma ve çıkarma, ikisinin tamamlanmamış işaretli tamsayılarla aynı şekilde, imzalanmamış tamsayılarla olduğu gibi çalışır.