The shift operators, <<
and
>>
move the bits in the left-side operand as far as specified by the
right-side operand. If m
is a mask that allows passage of bits 0
and 3, you can shift the on bits two places to the left, creating a mask
that allows passage of bits 2 and 5:
m *-*-*-*-*-*-*-*-* |0|0|0|0|1|0|0|1| ----* *-*-*-*-*-*-*-*-* | | | | *---* *---* v Action of m << 2 | | | v v | *-*-*-*-*-*-*-*-* | |0|0|1|0|0|1|0|0| <---* *-*-*-*-*-*-*-*-*
Similarly, you can shift the on bits two places to the right, losing the 0 bit, creating a mask that allows passage of bit 1 only:
m *-*-*-*-*-*-*-*-* |0|0|0|0|1|0|0|1| ----* *-*-*-*-*-*-*-*-* | | | | | *---* v Action of m >> 2 | | v | *-*-*-*-*-*-*-*-* | |0|0|0|0|0|0|1|0| <---* *-*-*-*-*-*-*-*-*