A visszatérési érték 1 ha minden rendben, és a növelés megtörtént. 0 ha az eredmény nem fér el azon a helyen, ami q számára rendelkezésre áll.
q eredeti értékét a növelt értékkel felülírja a függvény, abban
az esetben is, ha az eredmény nem fér el q-ban. Ebben az esetben
q lefutás utáni értéke nem definiált.
int Increment(Number q, int cy){
register int i,acc;
cy értéke a ciklus mindenegyes megkezdésekor annyi, amennyivel a
256 i helyiértéken levő digitet növelni kell. Ezt az értéket a program
hozzáadja a digithez, és egy átmeneti helyen tárolja. Ennek az értéknek a
256-od részét kell majd a következő digithez hozzáadni, míg az aktuális
digit új értéke az lesz, ami acc átmeneti tároló alsó bájtjában
van. A ciklust addig kell folytatni, amíg van a felsőbb helyiértékű
digitekhez hozzáadni való és amíg vannak még digitek.
for( i = 0 ; i
Ha a ciklus úgy ért véget, hogy még lett volna hozzáadni való a nagyobb
helyiértékű digitekhez, de már nincsnenek ilyen digitek, akkor az eredmény
nem fér el a q számára rendelkezére álló helyen. Ha nem, akkor a
növelés sikeres volt.
if( cy )return 0; else return 1;
}
int Decrement(Number a, int Value){ register int j;Ha a legalsó digitje kissebb, mint a levonandó érték, akkor a többi digittel nem is kell törődni. Ez a leggyakoribb eset a használat során, ezért ennek a külön vizsgálata gyorsítja a programot.
if( a->digit[0] >= Value ){ a->digit[0] -= Value; return 1; } else{Ha nem ez a helyzet, akkor kölcsön kell vennünk egy bitet az eggyel nagyobb helyiértékű digitből.
a->digit[0] += 0x100 - Value;A kölcsönvett bitet vissza kell adnunk, azaz levonni eggyet a második, harmadik, ... digitből, mindaddíg, amíg találunk egy olyan ditiet, ami pozitív, vagy amíg el nem fogynak a digitek.
for( j=1 ; jHa le lehet vonni a kölcsönvett bitet az aktuális digitből, akkor megtesszük, és készen vagyunk, sikeres volt a csökkentés.n ; j++ ){
if( a->digit[j] ){ a->digit[j] --; return 1; }Ha nem sikerült, akkor a digit értéke 255 lesz, és az eggyel nagyobb helyiértékű digitből kell levonni egyet.
a->digit[j] = 0xff;/* 0+0x100-1 is constant. */ } return 0; } }