diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-09-20 23:30:08 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-09-20 23:30:08 +0800 |
| commit | e78d250e1fb73184d895b9663affb0e0f675b129 (patch) | |
| tree | c83ed97ce37b8e4f96018897c647fcddf866eaa9 | |
| parent | 8dc87e8d58730cd93b1da80f02863398ff8e2dae (diff) | |
| download | datalab2026-e78d250e1fb73184d895b9663affb0e0f675b129.tar.gz datalab2026-e78d250e1fb73184d895b9663affb0e0f675b129.tar.xz | |
optimize byteSwap
| -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); } /* |
