这是我个人学习c语言的练习,如果对你有帮助,请关注我,我将不定期更新,如果疑问或者建议可以在评论区留言沟通。
/*
*Copyright(c)2018 vinnfeng
*文件名:main.c
*描述:将手动输入的**16位数字分别左旋转和右旋转**n位
*作者:V万能的小黑V
*日期:2018年11月21日
*当前版本:1.0
*/
#include <stdio.h>
/*
*函数名称:retate16Left
*描述:将形参num获取的值左旋转n位
×作者:V万能的小黑V
×完成日期:2018年11月21日
×返回:短整形num3为旋转的结果
×当前版本:1.0
*/
unsigned short int rotate16Left(unsigned short int num,int n){
unsigned short int num1,num2,num3;
num1 = num >> n;
num2 = num << (n*3);
num3 = num1 | num2;
//printf("111111");
//printf("%#x\n",num3);
return num3;
}
/*
*函数名称:rotate16Right
*描述:将形参num获取的值右旋转n位
×作者:V万能的小黑V
×完成日期:2018年11月21日
×返回:短整形num3为旋转的结果
×当前版本:1.0
*/
unsigned short int rotate16Right(unsigned short int num,int n){
unsigned short int num1,num2,num3;
num1 = num >> (n*3);
num2 = num << n;
num3 = num1 | num2;
//printf("22222");
//printf("%#x\n",num3);
return num3;
}
/*
*函数名称:main
*描述:实现手动输入16位数字和要旋转的位数,并将原始数字以及左旋转和有旋转的数字打印出来
×作者:V万能的小黑V
×完成日期:2018年11月21日
×输入:短整型num为手动输入的16为数字,整型n为旋转的位数
×当前版本:1.0
*/
int main(void)
{
unsigned short int num;
int n;
printf("请输入一个16进制的数字,以及想要左旋转右旋转的位数,我们将自动为您计算:");
scanf("%hx %d",&num,&n);
//scanf("%d",&n);
printf("原始数字:%#x\n",num);
printf("左旋转%d位后的数字为:%#x\n",n,rotate16Left(num,n));
printf("右旋转%d位后的数字为:%#x\n",n,rotate16Right(num,n));
return 0;
}