panshengyin 2017-02-07 14:25 采纳率: 50%
浏览 2527
已采纳

循环右移和左移怎么理解

#include

right(unsigned value, int n) /*自定义循环右移函数*/
{
unsigned z;
z = (value >> n) | (value << (16-n)); /*循环右移的实现过程*/
return (z);
}

left(unsigned value, int n) /*自定义左移函数*/
{
unsigned z;
z = (value >> (16-n)) | (value << n); /*循环左移的实现过程*/
return z;
}

main()
{
unsigned a;
int n;
printf("please input a number:\n");
scanf("%o", &a); /*输入一个八进制数*/
printf("please input the number of displacement:\n");
scanf("%d", &n); /*输入要移位的位数*/
if (n > 0)
{
right(a, n); /*调用自定义的右移函数*/
printf("the result is:%o\n", right(a, n)); /*将右移后的结果输出*/
}
else
{
n = - n; /*将n转为正值*/
left(a, n); /*调用自定义的左移函数*/
printf("the result is %o:\n", left(a, n)); /*将左移后的结果输出*/
}
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-02-07 16:00
    关注

    你用二进制输出下就知道了
    假如一个数字是 1111100000
    左移就是 1111000001 1110000011 1100000111 ...
    右移就是 0111110000 0011111000 0001111100 ...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算