Реализовать сложение двоичных чисел с использванием строк - C#
Формулировка задачи:
Сложность в том как реализовать перенос бита
static public string AddBinaryNumbers(string first_num,string second_num)
{
string result = "";
while (first_num.Length % 8 != 0)
{
first_num = "0" + first_num;
}
while (second_num.Length % 8 != 0)
{
second_num = "0" + second_num;
}
for(int i = first_num.Length - 1; i >= 0; i--)
{
if (first_num[i] == 0 ^ second_num[i] == 0)
{
result = "1" + result;
}
else if (first_num[i] == 1 && second_num[i] == 1)
{
}
else
result = "0" + result;
}
return result;
}Решение задачи: «Реализовать сложение двоичных чисел с использванием строк»
textual
Листинг программы
public static string AddBinaryNumbers(string f, string s)
{
string result = "";
int l = f.Length > s.Length ? f.Length : s.Length;
f = f.PadLeft(l + 1, '0');
s = s.PadLeft(l + 1, '0');
char ostatok = '0';
for (int i = f.Length - 1; i >= 0; i--)
{
result = (char)(f[i]^s[i]^ostatok) + result;
ostatok = (f[i] == '1' && s[i] == '1') || (f[i] == '1' && ostatok == '1') || (s[i] == '1' && ostatok == '1') ? '1' : '0';
}
return result.TrimStart('0');