Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2509731
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-09-25 14:01:25

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

#include <stdio.h>
unsigned short moveleft(unsigned short ,int);
unsigned short moveright(unsigned short,int);
int main(int argc, char *argv[])
{
    unsigned short a;
    int n;
    printf("input an octal number:");
    scanf("%o",&a);
    printf("input n:");
    scanf("%d",&n);
    if (n > 0)
    {
          printf("result:%o\n",moveright(a,n));
    }
    else
    {
        n = -n;
        printf("result:%o\n",moveleft(a,n));
    }
    system("pause");
}
unsigned short moveleft(unsigned short value,int n)
{
    unsigned short z;
    z = (value >> (16 - n)) | (value << n);
    return z;
}

unsigned short moveright(unsigned short value ,int n)
{
    unsigned short z;
    z = (value >> n) | (value << (16 - n));
    return z;
}


阅读(3698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~