Это похоже на ответ Андреаса Бринка, только оно возвращает полную выходную строку и может сравнивать строки различной (произвольной) длины.
Пример на C # (сейчас не рядом с компилятором c ++), но преобразовать его в язык по вашему выбору должно быть просто.
public static string BitwiseOr(string input1, string input2)
{
char[] inarr1 = (char[])input1.ToCharArray().Reverse().ToArray();
char[] inarr2 = (char[])input2.ToCharArray().Reverse().ToArray();
char[] outarr = new char[input1.Length > input2.Length ? input1.Length : input2.Length];
for (int i = 0; i < outarr.Length ; i++)
{
char c1 = i < input1.Length ? inarr1[i] : '0';
char c2 = i < input2.Length ? inarr2[i] : '0';
outarr[i] = (char)((c1 - '0') | (c2 - '0') + '0');
}
return new string((char[])outarr.Reverse().ToArray());
}
Конечно, это действительно только в том случае, если вам действительно нужно, чтобы оно было в строке, если нет, то вам (как предлагается в других ответах) следует использовать векторный или аналогичный тип данных.