> > One idea I have is to let the loop iterate only over tap_num and then > > use a mask 'BIT(i) | BIT(i+tap_num)' and work with binary operators > > then. But maybe there are also macros to test and clear bit patterns? > > I agree that the loop is clumsy. Unfortunately I can't find any bitmap > operations that work with bit patterns. If this where just integers the > following would have been a better solution: > > mask = (1 << host->tap_num) - 1; > taps = (host->taps & (host->taps >> host->tap_num)) & mask; > host->taps = (taps << host->tap_num) | taps; My above sketch doesn't work? for (i = 0; i < host->tap_num; i++) { mask = BIT(i) | BIT(i + host->tap_num); if (host->taps & mask != mask) host->taps &= ~mask; } Written from top of my head, maybe I overlooked something.
Attachment:
signature.asc
Description: PGP signature