Do you mean logical or bitwise? Logically, both inputs are TRUE so the output would also be TRUE, typically represented as -1, i.e. "1111", but the bitwise AND of 1111 and 1010 is 1010.

If bitwise then to avoid characterset issues you should use logic, i.e.
Code:
str3[i]=(str1[i]=='1' && str2[i]=='1') ? '1' : '0';
as opposed to
Code:
str3[i]=str1[i] & str2[i];
which will work in ASCII where '0' is 0x30 and '1' is 0x31 but the code would not be portable to charactersets where that relationship is not true. Also the first bit is effectively self-documenting; any maintenance programmer would see that code and understand its intent directly without having to work through the obvious "why is this idiot bitwise ANDing characters?".