二进制添加2个值表示为字符串

时间:2010-02-12 15:26:20

标签: c# binary addition

我有两个字符串:

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)。

6 个答案:

答案 0 :(得分:13)

System.Convert应该能够为你做的工作

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

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

(你可能需要稍微调整一下字符串)

答案 1 :(得分:5)

你就像在纸上那样做。从右开始向左移动。如果A [i] + B [i] +携带> = 2,则进位保持为1并继续前进。否则,写A [i] + B [i] +进位并将进位设为0。

a =“00001”; b =“00010”;

carry = 0; a [4] + b [4] + carry = 1,写1,设置carry = 0:00001

a [3] + b [3] + carry = 1,写1,设置carry = 0:00011

等等。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

非常简单 - 为二元字符的“添加”写一个查找表,如果有必要,请不要忘记随身携带,并向我发送50%的工作余额。

答案 4 :(得分:0)

我建议将数据解析为整数然后添加它们,然后将结果输出为二进制文件。

答案 5 :(得分:0)

var sum = Convert.ToString(Convert.ToInt32("00010", 2) + Convert.ToInt32("00001", 2), 2).PadLeft(5, '0');
  

“00011”

PadLeft并不是真的需要,但如果字符串长度不同,你会得到相同的格式。例如:

var sum = Convert.ToString(Convert.ToInt32("0000010", 2) + Convert.ToInt32("001", 2), 2).PadLeft(5, '0');
  

“00011”