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

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-09-25 13:53:46

    编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数的调用形式为 getbits(value,n1,n2);value为该16位(2个字节)中的数据值,n1为欲取出的起始位,n2为欲取出的结束位,例如getbits(0101675,5,8)表示对八进制101675这个数,取出它的从左面起第5位到第8位。
   代码如下:

#include <stdio.h>

unsigned short int getbits(unsigned short value,int n1,int n2);
int main(int argc,char *argv[])
{
    unsigned short int a;
    int n1,n2;
    printf("input an octal number:");
    scanf("%o",&a);
    printf("input n1,n2:");
    scanf("%d,%d",&n1,&n2);
    printf("result:%o\n",getbits(a,n1,n2));
    system("pause");
    return 0;
}
unsigned short int getbits(unsigned short value,int n1,int n2)
{
         unsigned short int z;
         z = ~0;
         z = (z >> n1) & (z << (16-n2));
         z = value & z;
         z = z >> (16 - n2);
         return z;
}


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