public static void Main(string[] args)
Console.WriteLine($"Adding 1001 + 1010 = {BinaryAdd("1001", "1010")}");
private static string BinaryAdd(string num1, string num2)
var reversed1 = Reverse(num1);
var reversed2 = Reverse(num2);
var output = new System.Text.StringBuilder();
for (var i = 0; i < (reversed1.Length > reversed2.Length ? reversed1.Length : reversed2.Length); i++)
var digit1 = reversed1[i];
var digit2 = reversed2[i];
if (digit1 == '0' && digit2 == '0')
else if ((digit1 == '0' && digit2 == '1') || (digit1 == '1' && digit2 == '0'))
else if (digit1 == '1' && digit2 == '1')
if (digit1 == '0' && digit2 == '0')
else if ((digit1 == '0' && digit2 == '1') || (digit1 == '1' && digit2 == '0'))
else if (digit1 == '1' && digit2 == '1')
for (; carry > 0; carry--)
return Reverse(output.ToString());
private static string Reverse(string @in)
var reverseSb = new System.Text.StringBuilder();
foreach (var digit in @in)
reverseSb.Insert(0, digit);
var reverse = reverseSb.ToString();