aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bits.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/bits.c b/bits.c
index 8652b1a..0be410f 100644
--- a/bits.c
+++ b/bits.c
@@ -101,7 +101,19 @@ int logtwo(int v) {
* Difficulty: 2
*/
int byteSwap(int x, int n, int m) {
- return 2;
+ int ns = (n << 3) ;
+ int ms = (m << 3);
+ int nb = (x >> ns) & 0xFF;
+ int mb = (x >> ms) & 0xFF;
+
+ int mask = ~((0xFF << ns) | (0xFF << ms));
+
+ x = x & mask;
+
+ x = x | (nb << ms);
+ x = x | (mb << ns);
+
+ return x;
}
/*