Dodawanie z przeniesieniem

Dodawanie z przeniesieniem (ang. addition with carry, mnemonik asemblera x86 ADC) to operacja arytmetyczna polegająca na dodaniu 2 liczb n-bitowych i jednej 1-bitowej która daje (n+1)-bitowy wynik:

Argument1 + Argument2 + Przeniesienie = 2n*Nowe_przesienienie + Wynik

Operacja ta umożliwia proste dodawanie liczb dowolnej wielkości. Bez niej potrzebny byłby znacznie większy i wolniejszy kod ze skokami warunkowymi. Jest też bardzo tania do implementacji w sprzęcie, jeśli ma on tylko dodawanie (konieczne w każdym praktycznym procesorze) oraz flagę przeniesienia (konieczną do wielu innych celów, np. porównywania liczb).

Załóżmy, że ALU potrafi dodawać 8-bitowe liczby, a chcemy dodać 2 liczby 32-bitowe a i b, zapisane w 4 bajtach każda a[0], a[1], a[2], a[3] i b[0], b[1], b[2], b[3].

Najpierw dodajemy (operacją dodawania bez przeniesienia lub wyzerowawszy bit przeniesienia) najmniej znaczące bajty:

256 * Carry1 + c[0] = a[0] + b[0] + 0

Następnie trzykrotnie robimy dodawanie z przeniesieniem:

256 * Carry2 + c[1] = a[1] + b[1] + Carry1
256 * Carry3 + c[2] = a[2] + b[2] + Carry2
256 * Carry4 + c[3] = a[3] + b[3] + Carry3

Dodawanie z przeniesieniem

Dodaje.pl - Ogłoszenia lokalne