Flip k least significant bits in an integer

Technology CommunityCategory: Bit ManipulationFlip k least significant bits in an integer
VietMX Staff asked 3 years ago

The ~ unary operator is bitwise negation. If you need fewer bits than what fits in an int then you’ll need to mask it with & after the fact.

To flip the k least significant bits, use the right mask.

int flipBits(int n, int k) {
    int mask = 1;
    for (int i = 1; i < k; ++i)
        mask |= mask << 1;

    return ~n & mask;
}

or you can create a mask without loop:

int flipBits2(int n, int k) {
    int mask = (1 << k) - 1;
    return ~n & mask;
}