zoukankan      html  css  js  c++  java
  • 右循环移位

    实例十二:右循环移位


    方法:result=n>>k|n<<(32-k)


    (1) b:将n的右端的k位先放到b中的高位中。
            b=n<<(32-k);
    (2) c:将n右移k位,其左边高位k位补0。
         c=n>>k;
    (3) 将b和c进行或操作.

    简化例子:
      x=n<<4    x保存n左移4位后的数
      y=n>>4    y保存n右移4位后的数
      result=x|y   x和y进行与操作

    即把数的8位,前4位与后4位进行交换。


    解释:
    原数        0101 0011
    左移4位       0011 0000 ---x
    原数右移4位     0000 0101 ---y
    x|y ---x和y进行与操作
    结果        0011 0101

    int _tmain(int argc, _TCHAR* argv[])
    {
      int n,k,b,c,nResult = 0;

      cout << "请输入原始的值:";
      cin >> n;
      cout << "请输入左移的位:";
      cin>>k;

      b = n<<(32-k) ;     // 将原始数据的低位移动到b的高位中
      c=n>>k;        //把原始数据进行右移
      nResult = b|c;     //或运算,把从前的低位放到移动后的高位中

      cout << endl <<"结果:"<< nResult;

      system("pause");
      return 0;
    };

  • 相关阅读:
    vue 基础
    Bootstrap 基础
    FormatMessage函数
    CreateProcess中的部分参数理解
    关于远程线程的调用
    利用服务枚举进程
    FindQQByProcess
    寻找kernel32.dll的地址
    ShellCode的几种调用方法
    操作系统版本
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/6635640.html
Copyright © 2011-2022 走看看