zoukankan      html  css  js  c++  java
  • 位运算->自定义函数之通用位移

    编写一个函数,实现左右循环移位。函数名为move,调用方法为move(value, n)。其中value为需要循环位移的数,n为位移的位数。n<0表示为左移;n>0表示为右移。例如,n=4表示右移4位;n=-3表示左移3位。

    位运算这么灵活强大,为什么用数组呢?

    #include <stdio.h>
    unsigned int move(unsigned int value,int n)
    {
        int i;
        unsigned int t;
        if(n>0)
        {
            for(i=0;i<n;i++)
            {
                t=value & 1;  //判断最后一位是否为1
                value=value>>1;   //右移舍去最后1位
                if(t==1) value=value | 0x80000000; //如果最后一位是为1,则把最前面一位设置为1
            }
        }
        else
        {
            n=-n;
            for(i=0;i<n;i++)
            {
                t=value & 0x80000000;//判断最前面一位是否为1
                value=value<<1; //左移舍去最后1位
                if(t==0x80000000) value=value | 1;//如果最前面一位是为1,则把最后一位设置为1
            }
       }
       return value; 
    }
    int main()
    {
        unsigned int a,b;
        int n;
        scanf("%u%d",&a,&n);
        b=move(a,n);
        printf("%u
    ",b);
        return 0;
    }
    
    
    
    
  • 相关阅读:
    BigDecimal用法详解
    Spring IOC的配置使用
    Spring IOC容器基本原理
    Spring IOC基础
    Spring基础
    Spring概述
    win7+jdk环境变量配置
    订单状态
    项目经理与项目管理整理
    top命令按内存和cpu排序
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832264.html
Copyright © 2011-2022 走看看