Вы можете типизировать массив символов к наибольшему целому числу, которое поддерживает ваша машина, а затем выполнить операцию ИЛИ с целыми числами, что сэкономит вам несколько циклов инструкций. Обратите внимание, что вам нужно будет выбрать размер массива, кратный размеру целого числа, которое вы используете.
#define LARGE_INTEGER unsigned long long
#define ACTUAL_SIZE 10
#define SIZEOF_LARGE_INT sizeof(LARGE_INTEGER)
#define N (ACTUAL_SIZE + (SIZEOF_LARGE_INT - (ACTUAL_SIZE % SIZEOF_LARGE_INT)))
char a[N] = {0,1,0,1,0,1,1,1,1,1};
char b[N] = {1,0,1,0,1,0,1,0,1,0};
char c[N];
LARGE_INTEGER *pa, *pb, *pc;
int i;
for(i = 0; i < N; i = i + SIZEOF_LARGE_INT)
{
pa = (LARGE_INTEGER*) &a[i];
pb = (LARGE_INTEGER*) &b[i];
pc = (LARGE_INTEGER*) &c[i];
*pc = (*pa) | (*pb);
}