May be they wanted you to show how to write a generic set/reset snippet without branches...
This could be accomplished with
value = (value & ~(1 << bit)) | (bitval << bit);
where bit is the bit position and bitval is 1 for set and 0 for reset.
Something even slightly more general is the following:
value = (value & ~(k1 << bit)) ^ (k2 << bit);
that implements several operations:
k1=0 and k2=0 does nothing
k1=0 and k2=1 toggles the bit
k1=1 and k2=0 clears the bit
k1=1 and k2=1 sets the bit
More generally with
value = (value & a) ^ x;
you can decide to change several bits of value at the same time by
aj=0, xj=0 → setting them to 0
aj=0, xj=1 → setting them to 1
aj=1, xj=0 → leaving them untouched
aj=1, xj=1 → flipping them
depending on the precomputed constants a and x (aj and xj are the value of the j-th bit in the constants).
For example
value = (value & 0x0F) ^ 0x3C;
with a single operation will
- leave untouched bit 0 and 1
- flip bits 2 and 3
- set to 1 bits 4 and 5
- set to 0 all other bits