2010-02-12 21 views
5

J'ai deux cordes:Addition binaire de 2 valeurs représentées sous forme de chaînes

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"; 

Je veux effectuer une addition binaire entre les deux si la réponse sera 00011 (3).

+1

Hmm ... question de devoirs ... –

+4

Le travail à la maison peut-être, mais toujours assez intéressant - il a piqué ma curiosité assez que j'ai une application de console ouverte et tripoter avec elle maintenant! ;) – Rob

+1

pas vraiment les devoirs>. Alfred

Répondre

12

System.Convert devrait être en mesure de faire le travail pour vous

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

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

(vous pouvez avoir à régler les chaînes un peu)

+0

chaîne a = "00001"; chaîne b = "00011"; int num1 = Convert.ToInt32 (a, 2); int num2 = Convert.ToInt32 (b, 2); string ans = Convert.ToString (num1 + num2, 2); MessageBox.Show (ans); "merci beaucoup :) vous avez sauvé mon projet !!!!!!!!!!!!!!!!" – Alfred

+0

j'avais besoin de calculer la fréquentation en utilisant cette logique :), comme 00001 wld représenter absent pour la 1ère heure (nous avons une heure de présence sage) donc si un étudiant est absent pour la prochaine heure dans la même journée 00001 - absent premier h 00010 - absent deuxième h ------ 00011 - absent pour la 1ère et 2ème h: D cela fonctionne !! merci – Alfred

+0

Je dois dire, je ne savais pas que le remplacement particulier de Convert.ToInt32 existe! – Rob

3

Vous le faites comme vous le feriez sur papier. Commencez par la droite et déplacez-vous vers la gauche. si A [i] + B [i] + carry> = 2, le report reste 1 et vous continuez. Sinon, écrire A [i] + B [i] + porte et retenue à 0.

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

carry = 0; a [4] + b [4] + carry = 1, écrire 1, définir carry = 0: 00001

a [3] + b [3] + carry = 1, écrire 1, définir carry = 0: 00011

Et ainsi de suite.

0

Très facile - écrire une table de recherche pour « plus » de caractères binaires, ne pas oublier de porter le cas échéant, et envoyez-moi 50% du crédit que vous obtenez pour le travail.

0

Je recommanderais d'analyser les données à ints, puis de les ajouter, puis d'afficher le résultat sous forme binaire.

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

Vous devriez ajouter quelques explications à votre exemple afin que les débutants puissent comprendre ce qu'il fait. – titanofold