循环右移 就是
创新互联公司2013年开创至今,是专业互联网技术服务公司,拥有项目网站设计制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元东安做网站,已为上家服务,为东安各地企业和个人服务,联系电话:18980820575
_cror_
和这个类似的。
你这个是单片机里面的吧
除了单片机,很少有这么用的。
#include stdio.h
void fun(int value,int n,int dire)
{
if(dire==0) return;
int x=1(sizeof(int)*8-1);
int temp;
int i;
if(dire0)
{
for(i=0;in;i++)
{
temp=value1;
value=1;
if(temp) value|=x;
}
}
else
{
for(i=0;in;i++)
{
temp=value x;
value=1;
if(temp) value|=1;
}
}
}
void main()
{
int x=0x55555555;
fun(x,1,1);
printf("%x",x);
}
#include stdio.h
#include math.h
unsigned fun(unsigned num, int n)
{
if(n 0)
{
//sizeof(unsigned)*8计算变量所占位数,如int型占32位
return (num (sizeof(unsigned)*8 - n)) | (num n); //先高位移动,再低位移动后,两者按位或,相当把低位溢出的又添加到了高位,实现了循环的效果
}
else
{
return (num (sizeof(unsigned)*8 - abs(n))) | (num abs(n));
}
}
void main(void)
{
printf("%u\n", fun(2, -34));
}