ho provato con il seguente codice, ma non riesco a capire perché mi sta dando una risposta sbagliata. sto calcolando il complemento a 2 e aggiungendo con un altro no.Sottraendo due numeri senza utilizzare l'operatore '-'
#include <stdio.h>
int add(int a, int b) {
while (a) {
a = (a & b) << 1;
b = a^b;
}
return b;
}
int sub(int a, int b) // add a with b's 2's complement.
{
return (add(a, add(~b, 1)));
}
int main() {
int a, b, res;
a = 3, b = 1;
res = sub(a, b);
printf("%d\n", res);
return 0;
}
'sub()' si sta dando il risultato sbagliato, perché 'add()' è sbagliato. La logica in 'sub()' va bene. – NullUserException
Cosa c'è di sbagliato in '-'? Cosa c'è di sbagliato in 'a + b'? –
Anche questo riporta alla memoria. Il nostro professore non ci permetterebbe di usare loop, o dichiarazioni "if" per quella materia. – NullUserException