/*
* Exercise 2-8 Write a function rightrot(x, n) that
* returns the value of the integer x rotated to the
* right by n bit positions.
*
* Written by fduan on Dec, 14, 2011.
*/
#include <stdio.h>
/* the number of significant bits of x */
int calc_bits( unsigned x )
{
int n = 0;
while( x != 0 )
{
x >>= 1;
++n;
}
return n;
}
/* right circular shift by 1 bit */
unsigned right_rot_bit( unsigned x, int nbits )
{
return x == 0 ? 0 : ( ( x & 01 ) << ( nbits - 1 ) ) | ( x >> 1 );
}
/* right circular shift by n bits */
unsigned right_rot_bits( unsigned x, int n )
{
int i, nbits;
nbits = calc_bits( x );
for( i = 0; i < n; ++i )
x = right_rot_bit( x, nbits );
return x;
}
int main()
{
unsigned x = 13;
int n;
for( n = 0; n < 8; ++n )
printf( "%d: %u\n", n, right_rot_bits( x, n ) );
return 0;
}K&R C Exercise 2-8 Solution
最新推荐文章于 2021-03-10 16:07:57 发布
本文详细介绍了如何使用C语言实现整数位的右旋转操作,通过定义特定函数来计算整数的位数并执行位移,最终输出一系列经过不同位移次数后的整数值。

2243

被折叠的 条评论
为什么被折叠?



