diff options
Diffstat (limited to 'bits.c')
| -rw-r--r-- | bits.c | 16 |
1 files changed, 4 insertions, 12 deletions
@@ -101,19 +101,11 @@ int logtwo(int v) { * Difficulty: 2 */ int byteSwap(int x, int n, int m) { - int ns = (n << 3) ; - int ms = (m << 3); - int nb = (x >> ns) & 0xFF; - int mb = (x >> ms) & 0xFF; + int ns = n << 3; + int ms = m << 3; + int diff = ((x >> ns) ^ (x >> ms)) & 0xFF; - int mask = ~((0xFF << ns) | (0xFF << ms)); - - x = x & mask; - - x = x | (nb << ms); - x = x | (mb << ns); - - return x; + return x ^ (diff << ns) ^ (diff << ms); } /* |
