2010-02-12 33 views
5

我有兩個字符串:二進制加法2個值表示爲字符串

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

我想執行兩者二進制加法所以答案將是00011(3)。

+1

嗯...功課的問題... – 2010-02-12 15:27:59

+4

它可能是家庭作業,但仍然是一個非常有趣的作品 - 它激起了我的好奇心,因此我已經打開了一個控制檯應用程序並且現在就擺弄它! ;) – Rob 2010-02-12 15:34:32

+1

不是真的家庭作業>。<項目:D – Alfred 2010-02-12 16:10:24

回答

12

System.Convert應該能夠做到爲您的工作

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

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

(您可能需要調整串位)

+0

string a =「00001」; string b =「00011」; int num1 = Convert.ToInt32(a,2); int num2 = Convert.ToInt32(b,2); string ans = Convert.ToString(num1 + num2,2); MessageBox.Show(ans); 「非常感謝:)你已經保存了我的項目!!!!!!!!!!!!!!!!」 – Alfred 2010-02-12 16:05:29

+0

我需要使用這個邏輯來計算出勤:), 因爲00001 wld代表第一小時缺席(我們每小時有智慧出席),所以如果一個學生缺席當天的下一小時 00001 - 缺席第一小時 00010 - 缺席第二小時 ------ 00011 - 缺席第一和第二小時:D 它的工作原理!謝謝你 – Alfred 2010-02-12 16:06:03

+0

我不得不說,我不知道Convert.ToInt32的特定重寫存在! – Rob 2010-02-13 11:30:07

3

你這樣做就像你會在紙上做一樣。從右側開始並向左移動。如果A [i] + B [i] +進位> = 2,則進位保持爲1,然後繼續。否則,寫入A [i] + B [i] +進位並將進位置爲0.

a =「00001」; b =「00010」;

carry = 0;寫入1,設置進位= 0:00001

a [3] + b [3] +進位= 1,寫入1,進位= 0: 00011

依此類推。

0

非常簡單 - 爲二進制字符的「添加」編寫一個查找表,不要忘記隨時攜帶,併發送給我50%的工作獎勵。

0

我建議將數據解析爲整數,然後添加它們,然後以二進制形式輸出結果。

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

你應該給你的例子添加一些解釋,以便新手能夠理解它的作用。 – titanofold 2012-11-11 00:59:38

相關問題