Originariamente inviato da Jhonny85
int ris = sommaBase(10, 11, 2);
println("ris = "+ris);

a video dovrebbe comparire: "ris = 101";

int ris = sommaBase(10, 11, 10);
println("ris = "+ris);

a video dovrebbe comparire: "ris = 21";

int ris = sommaBase(10, 11, 8);
println("ris = "+ris);

a video dovrebbe comparire: "ris = 21";//17 in decimale
In questo senso (molto particolare) sì ok. Ed è chiaro però che un int può avere un valore che magari non è valido per la base passata (es. metti 13 nel primo esempio in base 2). Ma questo è un altro discorso .... spetta a te garantire e/o verificare in un certo punto che non accada.

Ma torniamo alla logica: se tu dato un valore (che qui rappresento in decimale) come 11 vuoi che "rappresenti" in un certo senso particolare 11 in binario, ovviamente devi fare dei calcoli.

Cioè detto in altro modo, le cifre decimali del valore le vuoi "vedere" come cifre in quella base specifica. E anche per il risultato deduco dagli esempi che vuoi avere un int il cui valore stampato in decimale viene "visto" come il valore in quella certa base.

Prendiamo il primo esempio: 10 + 11 (base 2) --> 101

Devi fare delle divisioni per 10 ed ottenere 1 e 0 e poi 1 e 1.

1 + 0 (i due bassi) in decimale fa 1 e idem anche in base 2
1 + 1 (i due alti) in decimale fa 2 e tu "sapendo" che è in base 2 devi fare una divisione e un modulo (resto della divisione) 2 / 2 = 1 (il riporto) e 2 % 2 = 0 (il resto che è la somma)

Divisione/modulo li fai anche per la parte bassa, che però darebbe riporto 0 e resto (somma) 1. Quindi come vedi la logica è "generalizzabile".

Pertanto appunto si ha 1 0 1

Dopodiché devi creare di nuovo il valore in decimale facendo moltiplicazioni per 10 ed ottenere 101 in decimale.

EDIT: e anzi, ci sarebbe anche un altro modo (direi anche più semplice), visto in un'altra ottica. Dati i due numeri decimali es. 10 e 11 "visti" in base 2, fai i calcoli per ottenere 2 e 3. Quindi sommi banalmente i due int ottenuti ed hai 5. Ora dal valore 5 devi ottenere il valore decimale 101 che sarà poi "visto" in base 2.