2010-02-12 91 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

相关问题