ecco la somma...nn sn cm ci sia riuscita cmq esce

codice:
 

int temp=0;            //contiene il risultato della somma di due bit
int tot=0;            //totale
int Bit=1;           //utilizzato per azzerare i bit di un numero
int Carry=0;        //riporto
int Position=1;    //indica la posizione in cui va shiftato il carry

int somma_bit_bit(int first, int second)
//La funzione esegue la somma fra due bit e ne restituisce il risultato
{
first = first & Bit; /*vengono azzerati tutti i bit tranne 
                       quello dove è presente 1 */
second= second & Bit;                
     if(Carry!=0)               //se il riporto non è uguale a 0
	 {
temp=first^second^Carry;    //viene effettuata la somma fra i due bit 
		           //con il riporto
      if(first==0 && second==0)       //se il 1° BIT=0 ed il 2° BIT=0 
	  Carry=0;        //allora non vi è riporto al bit successivo 
		 else                            
		 {
	  Carry = 1;        /vi è riporto al bit successivo e tale
Carry=Carry<<Position;  //riporto viene shiftato di n posizioni		                 // per essere sommato al bit giusto
                }
		  
Position++;      //la posizione del riporto viene increm. al bit succ.
Bit=Bit<<1;     //bit viene shiftato a sinistra di una posizione 
		 //per l'AND succ. 
  return temp;    //viene restituita la somma fra i due bit esaminati
     	 }

	 if(Carry==0)                   //se il riporto è uguale a 0
	 {
temp=first^second^Carry;      //viene effettuata la somma fra i due 
	//bit con  l'aggiunta del riporto
               
if(first!=0 && second !=0)      //se il 1° BIT=0 ed il 2° BIT=0
		 {
  Carry=1;            //vi è riporto al bit successivo
Carry=Carry<<Position; //e tale riporto viene shiftato di n posizioni 
		     //per essere sommato alla prossima iterazione
                            		 }
 else Carry = 0;     //altrimenti non vi è riporto al bit successivo

Position++;      //la posizione del riporto viene incrementata 
		 //al bit successivo
         Bit=Bit<<1;   //bit viene shiftato a sin. di una posizione 
		           //per l'AND della prossima iterazione.
return temp;        //viene restituita la somma fra i due bit presi 
		         //in esame

	 }
}



void main(void)
{
   	 int num1;          //Primo addendo da inserire
         int num2;         // Secondo addendo da inserire
	 int count;      //contatore
         int risp;
   
	 do
	 {	 
     cout<<"1) Somma Algebrica fra due numeri\n";
     cout<<"2) Esci\n\n";

	 cout<<"Digita la tua scelta: ";
	 cin>>risp;

	 switch(risp)
	 {
	 case 1:
		 {
	      cout<<"\nInserisci il 1° numero: ";
	      cin>>num1;

	      cout<<"Inserisci il 2° numero: ";
	      cin>>num2;
//NB:1byte=8bit--->int=4byte--->int=32bit
	      for(count=1; count <= sizeof(int)*8; count++)
		  {
		   tot = tot + somma_bit_bit(num1, num2);
/*viene calcolato il totale come somma dei risultati parziali ottenuti dalla funzione somma_bit_bit iterata per 16 volte, tanto quanto la grandezza di un intero in C++*/
          	}

	      cout<<"\n Totale: "<<tot<<"\n\n";
		  
 /*REINIZIALIZZAZIONE DI TUTTE LE VARIABILI PER LA SOMMA SUCCESSIVA*/
          temp=0;                         
	  tot=0;                         
	  Bit=1;                          
          Carry=0;                        
          Position=1;      
		  
		  break;
		 }

	 case 2:
		 continue;
     default:
     		 cout<<"RISPOSTA ERRATA\n\n"<< num1;
		 break;
	 }
	 
	 } while(risp!=2);	 
}

scusate l'ho scritto in maniera disordinata