失礼しました。具体的には

void neg (int x[], int a[]) {
int carry = 1;
int i;
for (i = 0; i< SIZE; i++) {
int z = BASE - 1 -x[i] + carry;
a[i] = z % BASE;
carry = z / BASE;
}
}


void sub (int x[], int y[], int a[]) {
static int z[SIZE];
neg(y, z);
add(x,y,a);

というプログラムで何故減算が出来るのか(動作原理)を知りたいのです。