Witam - i od razu Życzę Wesołych Świąt

Mam takie pyt. jeśli chodzi o amperomierz z BB - jest tam naisane że dla procesorów z seri Atmega napięcie na wejsciu POS może być mniejsze niż na NEG. i wtedy wartość cyfrowa bedzie ujemna, i taką wartość należy odczytać w " KODZIE UZUPEŁNIEŃ DO DWÓCH"
- co to jest kod uzupełnień??? i jak sie go odczytuje do dwóch
Kolejne pyt. dot. fragmentu funkcji do konwersji liczby na łańcuch str. 271
if(val<0)
{
val= ~val+1;
subzero= 1;
fw-- ;
}
Dlaczego dodajemy 1 do zanegowanej wartości "val"