1 2 3 4 5 6 7 8 9 10 11 12
unsigned good (unsigned src, unsigned o5, unsigned w5) { return src & ~((w5 == 0) ? (~0 << o5) : (1 << o5)); } unsigned bad (unsigned src, unsigned o5, unsigned w5) { return src & ((w5 == 0) ? ~(~0 << o5) : ~(1 << o5)); }