#include <stdio.h>
#include <stdlib.h>
int wordlength(void)
{
int t;
unsigned v=(unsigned)~0;// 这里要尤其注意unsigned的使用 ,unsigned 左移 右移都补0
for(t=1;(v=v>>1)>0;t++)
{
}
return t;
}
unsigned int rightrot(unsigned int x,int n)
{
int wordlength(void);
int rbit;
while( (n--)>0 )
{
rbit=( x&1 ) << ( wordlength()-1 ) ;
x=x>>1;
x=x|rbit;
}
return x;
/* int bit,i;
for(i=0;i<n;i++)
{
bit=(x&0x01)<<7;
x=x>>1;
x=x|bit;
}
return x;
*/ // try 2 看准题目后 第二次尝试 未考虑到mcu和计算机的字长长度计算问题
// return x>>n; //try 1 未看准题目,想的太简单了
}
int main()
{
unsigned int x=0xdd,m=0;
m=rightrot(x,2);
printf(" %x ",m );
return 0;
}