Path: blob/master/languages/cprogs/Ex_2.8_rightrot.c
1240 views
/* write a function rightrot(x,n) that returns the value of the integer x rotated to rightby n bit positions */12#include<stdio.h>34unsigned rightrot(unsigned x,int n);56int main(void)7{8printf("%u",(unsigned)rightrot((unsigned)8,(int)1));910return 0;11}1213/* rightrot: rotate x to right by n bit positions */1415unsigned rightrot(unsigned x,int n)16{17int wordlength(void);18unsigned rbit;/* rightmost bit */1920rbit = x << (wordlength() - n);21x = x >> n;22x = x | rbit;2324return x;25}2627int wordlength(void)28{29int i;30unsigned v = (unsigned) ~0;3132for(i=1;(v=v>>1)>0;i++)33;34return i;35}3637383940