Chinaunix首页 | 论坛 | 博客
  • 博客访问: 491208
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1190
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 20:16
文章分类

全部博文(144)

文章存档

2017年(1)

2015年(5)

2014年(108)

2013年(30)

我的朋友

分类: C/C++

2014-11-05 21:40:33



点击(此处)折叠或打开

  1. /*
  2. Description
  3.          取给定正整数的指定bit位开始的指定长度的数据。bit位从右向左从0开始计算。
  4. Prototype
  5.          unsigned int GetBitsValue(unsigned int input, unsigned int startbit, unsigned int bitlen)
  6. Input Param
  7.          input 输入的整数
  8.          startbit 需要获取的开始bit
  9.          bitlen 需要获取的bit长度
  10. Output Param
  11.          无
  12. Return Value
  13.          对应的bit取值
  14. */

  15. unsigned int GetBitsValue(unsigned int input, unsigned int startbit, unsigned int bitlen)
  16. {
  17. //if(startbit>31||bitlen>32||(bitlen>(startbit+1)))
  18.         //return 1;

  19.     unsigned int mask=0;
  20.     unsigned int endbit=startbit+1-bitlen;
  21.     mask=(~mask)<<(bitlen);
  22.     
  23.     input=input>>endbit;
  24.     input=input&(~mask);

  25.     return input;
  26.  

  27.  
  28. }
例如输入 4 2 2
返回 2
阅读(2692) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~