取给定正整数的指定bit位开始的指定长度的数据

来源:互联网 发布:淘宝上怎么买氰化钾 编辑:程序博客网 时间:2024/05/29 16:13

例如input为4,对应二进制为0x100,startbit为2,bitlen为2,则取0x10,对应的输出应为2,是从startbit开始往后取bitlen个位。

/*Description           取给定正整数的指定bit位开始的指定长度的数据。bit位从右向左从0开始计算。Prototype         unsigned int GetBitsValue(unsigned int input, unsigned int startbit, unsigned int bitlen)Input Param          input      输入的整数         startbit   需要获取的开始bit         bitlen     需要获取的bit长度Output Param          无Return Value 对应的bit取值*/unsigned int GetBitsValue(unsigned int input, unsigned int startbit, unsigned int bitlen){/*在这里实现功能*/unsigned int outData = 0;unsigned int cnt = 1;for (unsigned int i=startbit;i>(startbit-bitlen);i--){outData |= (((input>>i)&0x00000001)<<(bitlen-cnt));cnt ++;}    return outData;}int main(){int a = GetBitsValue(29,3,2);return 0;}


0 0