From 552bc70b77d4fca54929b46190128721b93d887c Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 23 Jul 2019 12:09:24 -0400 Subject: Cleaned up directory. --- ch2/2-08.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 ch2/2-08.c (limited to 'ch2/2-08.c') diff --git a/ch2/2-08.c b/ch2/2-08.c new file mode 100644 index 0000000..9f7adbd --- /dev/null +++ b/ch2/2-08.c @@ -0,0 +1,21 @@ +#include + +/* + * 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)); +} -- cgit v1.2.3