#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int wordlength(void)
{
unsigned d=~0,i;
for (i = 0; d > 0;d >>= 1)
i++;
return i;
}
unsigned rightrot(unsigned x, int n)
{
unsigned d;
d = (x & 1) << wordlength(x)-1;
x = (x >> 1) | d;
return x;
}
unsigned rightrot1(unsigned x, int n)
{
if ((n = n%wordlength(x)) != 0)
{
unsigned rid;
rid = (x & 1) << wordlength(x) - 1;
x = (x >> 1) | rid;
}
return x;
}
int main()
{
unsigned x;
int n;
scanf("%u%d", &x, &n);
printf("%u>>%d=%u\n", x, n, rightrot(x,n));
printf("%u>>%d=%u", x,n, rightrot1(x,n));
system("pause");
return 0;
}
整数二进制移位
最新推荐文章于 2023-08-30 23:53:16 发布