common_ones = a & b;
common_zeros = ~a & ~b;
common_sequences = common_ones | common_zeros;
например:
a 1000010111001010100011110001010010101001011101001001001
b 0000000000010101110011011001010111101111111010001001011
c 0111101000100000101111010111111010111001011000111111101
, чтобы очистить однобитовые последовательности, вы можете использовать это:
c = c & ( c >> 1 );
c = c | ( c << 1 );
c 0111100000000000001111000111111000111000011000111111100
Не ясно, хотите ли вы, ноэто быстрый и простой способ найти все общие битовые последовательности в одной позиции в двух значениях.Если вы ищете общие битовые последовательности в любой позиции, вам нужно повернуть одно значение в каждую битовую позицию и выполнить вышеуказанные тесты.