Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - funzione
Forum - C/C++ - funzione

Avatar
frankus89 (Normal User)
Rookie


Messaggi: 23
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 10:26
Martedì, 28/07/2009
come implementereste una funzione che prese due numeri binari a k bit ne faccia la somma??

IO AVEVvo pensato a prendere delle stringhe di interi, con 1 e 0.
Non so però come gestire il riporto, nel caso ci siano due 1 nella posizione simmetrica dei due vettori.
Idee?


"Volevamo portare la democrazia in Medio Oriente. L'abbiamo uccisa in Occidente. Partecipa ai funerali,commossa ed affranta, l'informazione."
PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 10:46
Martedì, 28/07/2009
senza complicarti troppo la vita segui l'algoritmo della somma in binario alla lettera ;)
Confronti gli interi che hai memorizzato nei vettori due alla volta.
Se sono 0 e 0 o 0 e 1 non hai problemi :P se c'è il riporto (o carry) secondo me potresti mettere il valore della somma a 0 (o a 1 ad esempio se dopo un carry c'è un 1+1) e memorizzare in un flag che c'è il carry.
Al passo successivo esegui di nuovo la somma ma sai che c'è il carry e ti comporti di conseguenza :k:


Mamma diceva sempre che stupido è chi lo stupido fa.
PM Quote
Avatar
frankus89 (Normal User)
Rookie


Messaggi: 23
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 11:10
Martedì, 28/07/2009
il problema è quello..
come mi comporto con il carry??


"Volevamo portare la democrazia in Medio Oriente. L'abbiamo uccisa in Occidente. Partecipa ai funerali,commossa ed affranta, l'informazione."
PM Quote
Avatar
dacanalr (Normal User)
Rookie


Messaggi: 26
Iscritto: 23/07/2009

Segnala al moderatore
Postato alle 11:44
Martedì, 28/07/2009
puoi fare qualcosa tipo:

if(carry)
{   somma con carry; aggiorna carry; }
else
{   somma senza carry; aggiorna carry; }

Ultima modifica effettuata da dacanalr il 28/07/2009 alle 11:45


Io sono Bender! Prego, inserire floppino!
PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 11:58
Martedì, 28/07/2009
quindi il tuo problema non è come implementare l'algoritmo ma come sommare con il carry se ho ben capito. giusto?

tu sai che in binario:
0+0 = 0
0+1 = 1+0 = 1
1+1 = 0 con riporto di 1

quando hai il carry
0+0 = 1
0+1 = 1+0 = 0 con carry di 1
1+1 = 1 con carry di 1

Se invece ho capito male e il tuo problema è implementare l'algoritmo ti ripeto, usa un flag e quando vedi il carry settalo a TRUE.
la volta dopo esegui l'operazione sapendo che c'è il carry e lo rimetti a FALSE o TRUE a seconda della situazione ;)


Mamma diceva sempre che stupido è chi lo stupido fa.
PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 23:23
Mercoledì, 29/07/2009
Beh, volendo potresti applicare lo stesso modo di fare la somma del circuito Full Adder.

Consiste nella seguente cosa :

Considerando : A e B i 2 bit da sommare e C il carry precedente

La somma dei S di A e B è : S = A ^ B ^ C
Il nuovo carry newC di A e B è : newC = (A & B) | (C & S)

In questo modo sommi 2 bit. Lo fai per N bit e sei a posto :k:

PM Quote