Стандарт C не передбачає конкретного способу представлення негативних підписаних номерів.
У більшості реалізацій, з якими ви, швидше за все, зіткнетеся, цілі числа з підписаними знаками зберігаються у тому, що називається доповненням двох . Інший головний спосіб зберігання негативних підписаних номерів називається доповненням .
Доповнення двох з N-бітового числа xвизначається як 2^N - x. Наприклад, 8-бітним доповненням двох 1є 2^8 - 1, або 1111 1111. 8-бітовим доповненням двох 8є 2^8 - 8, що в двійковому є 1111 1000. Це також можна обчислити, перегортаючи біти xта додаючи один. Наприклад:
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
Доповнення N-бітового числа x визначається як x з усіма його бітами в основному.
1 = 0000 0001
-1 = 1111 1110
21 = 0001 0101
-21 = 1110 1010
Доповнення двох мають ряд переваг перед доповненням одного. Наприклад, у нього відсутнє поняття «негативний нуль», яке з поважних причин бентежить для багатьох людей. Додавання, множення і віднімання працюють однаково з підписаними цілими числами, реалізованими з двома доповненими, як і з непідписаними цілими числами.