diff options
author | Adam Carpenter <gitlab@53hor.net> | 2019-07-23 10:18:39 -0400 |
---|---|---|
committer | Adam Carpenter <gitlab@53hor.net> | 2019-07-23 10:18:39 -0400 |
commit | 8fcf25523124008a56515dc0b3de0a32f3283e18 (patch) | |
tree | 70307d89802759791679d52f900a195c4399fe61 /ch2/2-8.c | |
parent | c9adeb731014f88d857be2e98072807b2934f1f5 (diff) | |
download | learning-c-8fcf25523124008a56515dc0b3de0a32f3283e18.tar.xz learning-c-8fcf25523124008a56515dc0b3de0a32f3283e18.zip |
Super simplified 2-6 2-7, added 2-8
Diffstat (limited to 'ch2/2-8.c')
-rw-r--r-- | ch2/2-8.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ch2/2-8.c b/ch2/2-8.c new file mode 100644 index 0000000..9f7adbd --- /dev/null +++ b/ch2/2-8.c @@ -0,0 +1,21 @@ +#include<stdio.h> + +/* + * Returns the value of the integer x rotated to the right by n bit positions. + */ + +unsigned rightrot(unsigned x, int n) { + unsigned mask = ~(~0 >> 1); + + while (n-- > 0) + if (x & 1) + x = (x >> 1) | mask; + else + x >>= 1; + + return x; +} + +int main() { + printf("%x\n", rightrot(0xaa, 3)); +} |