循环移位:循环左移和循环右移 您所在的位置:网站首页 循环ABCDE 循环移位:循环左移和循环右移

循环移位:循环左移和循环右移

2024-01-19 13:13| 来源: 网络整理| 查看: 265

       循环移位就是把数值变成二进制,然后循环移动的过程;换句话说,循环移位就是将移出的低位放到该数的高位(循环右移)或把移出的高位放到该数的低位(循环左移),左移,和右移动都是对整数进行的操作,在Win32控制台应用程序中,整形占4Byte节32bit。

       循环左移的过程:        循环左移的过程可以分为3步: 1. 将x左端的n位先移动到y的低n位中,x>>(32-n); 2. 将x左移n位,其右面低位补0,x (32 - n) | (x n));

        假如将一个无符号的数据val,长度为N,需要循环移动n位。可以利用下面的公式:         循环左移:(val >> (N - n) | (val n))

       C语言实现循环移位:循环移位是对二进制序列进行操作,所以实现循环移位先需要将需要移位的数转换为二进制序列,然后按照上面描述的步骤进行移位,最后将移位后的二进制序列打印出来;

源代码

#include #include //将一个十进制数转换为二进制 void trans_binary(unsigned int val) { int a[32]; int i = 0; for(i=0;i= 0; j--,k++) { printf("%d", a[j]); if (k % 8 == 0) { printf(" "); } } printf("\n"); } //循环左移 void left_move(unsigned val, int n) { unsigned int z; printf("需要移位的二进制序列为:\n"); trans_binary(val); z = (val >> (32 - n) | (val n)); printf("移位后:\n"); trans_binary(z); } int main() { int num = 0; int n = 0; int select = 0; printf("请输入要移位的数和移动位数:\n"); scanf("%d%d", &num, &n); printf("请输入选择:(-1-:左移 -2-:右移 -0-:退出):\n"); scanf("%d", &select); switch (select) { case 1:left_move(num, n); printf("\n"); break; case 2:right_move(num, n); break; case 0:exit(0); break; default: printf("输入有误!\n"); break; } system("pause"); return 0; }

运行结果

        为了更直观的显示结果,选取了一个比较大的数1234567891,移动位数:8,移动方式:循环左移;根据循环左移的方法,先取出高8(移动的位数)位,移动到底8位(右移24位),然后将其余位数依此左移8位,结果与运行结果一致。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有