Вот и вы.
#include <iostream>
#include <iomanip>
#include <functional>
#include <iterator>
#include <algorithm>
int main()
{
const size_t N = 4;
int a1[N] =
{
0b10101, 0b01010, 0b10100, 0b00111
};
int a2[N] =
{
0b11100, 0b00110, 0b11111, 0b10001
};
int a3[N];
int a4[N];
std::transform( std::begin( a1 ), std::end( a1 ),
std::begin( a2 ),
std::begin( a3 ),
std::bit_and<int>() );
std::transform( std::begin( a1 ), std::end( a1 ),
std::begin( a2 ),
std::begin( a4 ),
std::bit_or<int>() );
std::cout << std::hex;
for ( const auto &item : a1 )
{
std::cout << std::setfill( '0' ) << std::setw( 2 ) << item << ' ';
}
std::cout << '\n';
for ( const auto &item : a2 )
{
std::cout << std::setfill( '0' ) << std::setw( 2 ) << item << ' ';
}
std::cout << '\n';
for ( const auto &item : a3 )
{
std::cout << std::setfill( '0' ) << std::setw( 2 ) << item << ' ';
}
std::cout << '\n';
for ( const auto &item : a4 )
{
std::cout << std::setfill( '0' ) << std::setw( 2 ) << item << ' ';
}
std::cout << '\n';
return 0;
}
Вывод программы:
15 0a 14 07
1c 06 1f 11
14 02 14 01
1d 0e 1f 17
Редактировать: после того, как вы отредактировали свой вопрос, изменив одномерные массивы на двух- Тогда вы можете использовать показанные вызовы алгоритма для каждой пары «строк» исходных массивов в al oop.
Например
for ( size_t i = 0; i < N; i++ )
{
std::transform( std::begin( a1[i] ), std::end( a1[i] ),
std::begin( a2[i] ),
std::begin( a3[i] ),
std::bit_and<int>() );
}