2010-02-12 7 views
5

Ho due stringhe:binario aggiunta di 2 valori rappresentati come stringhe

string a = "00001"; /* which is decimal 1 I've converted with next string: 
string a = Convert.ToString(2, 2).PadLeft(5, '0'); */ 
string b = "00010"; 

voglio eseguire somma binaria tra i due in modo che la risposta sarà 00011 (3).

+1

Hmm ... questione compiti a casa ... –

+4

I compiti a casa potrebbero essere, ma comunque piuttosto interessanti - ha stuzzicato la mia curiosità abbastanza da avere un'app Console aperta e giocarci intorno in questo momento! ;) – Rob

+1

non proprio i compiti>. Alfred

risposta

12

System.Convert dovrebbe essere in grado di fare il lavoro per voi

int number_one = Convert.ToInt32(a, 2); 
int number_two = Convert.ToInt32(b, 2); 

return Convert.ToString(number_one + number_two, 2); 

(potrebbe essere necessario accordare le corde un po ')

+0

string a = "00001"; stringa b = "00011"; int num1 = Convert.ToInt32 (a, 2); int num2 = Convert.ToInt32 (b, 2); string ans = Convert.ToString (num1 + num2, 2); MessageBox.Show (ans); "grazie mille :) hai salvato il mio progetto !!!!!!!!!!!!!!!!" – Alfred

+0

avevo bisogno di calcolare la presenza usando questa logica :), come 00001 wld rappresentare assente per 1 ora (abbiamo frequenza oraria) quindi se uno studente è assente per l'ora successiva nello stesso giorno 00001 - assente prima ora 00010 - assente seconda ora ------ 00011 - assente per 1a e 2a ora: D funziona !! grazie – Alfred

+0

Devo dire che non sapevo che esistesse un particolare override di Convert.ToInt32! – Rob

3

Lo fai esattamente come lo faresti sulla carta. Inizia da destra e vai a sinistra. se A [i] + B [i] + porta> = 2, trasporta rimane 1 e vai avanti. Altrimenti, scrivi A [i] + B [i] + trasporta e imposta carry a 0.

a = "00001"; b = "00010";

carry = 0; a [4] + b [4] + carry = 1, scrivere 1, impostare carry = 0: 00001

a [3] + b [3] + carry = 1, scrivere 1, impostare carry = 0: 00011

E così via.

0

Molto semplice: scrivere una tabella di ricerca per "aggiunta" di caratteri binari, non dimenticare di portare se necessario e inviarmi il 50% del credito che si ottiene per il lavoro.

0

Si consiglia di analizzare i dati in ints e quindi di aggiungerli, quindi di restituire il risultato come binario.

0
private static bool[] BinaryAdd(bool[] originalbits, long valuetoadd) 
    { 
     bool[] returnbits = new bool[originalbits.Length]; 

     for (long i = 0; i <= valuetoadd - 1; i++) 
     { 
      bool r = false; //r=0 
      for (long j=originalbits.Length-1;j<=originalbits.Length;j--) 
      { 
       bool breakcond = false; 
       bool o1 = originalbits[j]; 
       if (r == false) 
       { 
        if (o1 == false) { o1 = true; breakcond = true; }//break 
        else if (o1 == true) { o1 = false; r = true; } 
       } 
       else 
       { 
        if (o1 == false) { o1 = true; breakcond = true; }//break 
        else if (o1 == true) { o1 = false; r = true; } 
       } 

       originalbits[j] = o1; 
       if (breakcond == true) 
       { 
        break; 
       } 
      } 

     } 
     returnbits = originalbits; 

     return returnbits; 
    } 
+1

Dovresti aggiungere qualche spiegazione al tuo esempio in modo che i principianti possano capire cosa fa. – titanofold