//
// main.c
// 15.9-5
//
// Created by cjm on 2024/2/5.
//
#include <stdio.h>
#include <limits.h>
char * itobs(int n, char * ps);
unsigned int rotate(unsigned int x,int i);
int main()
{
unsigned int x=2999999999;
printf("%u\n",rotate(x,3));//注意这里的打印格式
return 0;
}
unsigned int rotate(unsigned int x,int i)
{
unsigned int len;
len = sizeof (unsigned int)*CHAR_BIT;
char str[len+1];
while(i!=0)
{
printf("旋转前 x=%s\n",itobs(x, str));
printf(" x<<1=%s\n",itobs(x<<1, str));
printf("x>>(len-1)=%s\n",itobs(x>>(len-1), str));
x=x<<1|((x>>(len-1))&1);
printf("旋转后 x=%s\n",itobs(x, str));
i--;
}
return x;
}
char * itobs(int n, char * ps)
{
int i;
const static int size = CHAR_BIT * sizeof (int);
for (i = size - 1; i >= 0; i--, n >>= 1)
{
ps[i] = (01 & n) + '0';
}
ps[size] = '\0';
return ps;
}