Логические инструкции есть и, или, xor, но я не понимаю ни первое предложение.
Что касается второго, предположим, что вас интересует часть слова, скажем, биты 6..4, и вы хотите извлечь эту информацию. Есть два способа сделать это.
1 / с использованием маскировки и сдвига. Вы устанавливаете маску с теми, которые интересуют вас и нули в других местах, и применяете AND с этой маской.
unsigned original ; // initial data is yyy...yyyxxxyyyy
// where the interesting part is coded by xxx
unsigned field ; // we want to have field=00..0xxx
unsigned mask = 0x70 ; // 0...01110000 ones on the interesting part
field = original & mask ; // field=0...00xxx0000
field >>= 4 ; // field=00...00xxx
2 / с использованием только смен
unsigned original, field ; // initial data and interesting field
field = original << 25 ; // put interesting bits in the msb of field
// field=xxxyyyy00..00
field >>= 29 ; // get rid of the 4 LSB -> field=00...00xxx
Аналогичные методы можно использовать, если вы хотите изменить эти биты вместо их извлечения.