题目
描述: 接口说明
原型:
unsigned int GetBitsValue(unsigned int input, unsigned int startbit, unsigned int bitlen)
输入参数:
input 输入的整数
startbit 需要获取的开始bit
bitlen 需要获取的bit长度
输出参数(指针指向的内存区域保证有效):
无
返回值:
对应的bit取值
举例:
输入:4, 2, 2
返回:2
4对应的二进制为100(bit0和bit1为0,bit2为1),那么从bit2开始的2位为10,那么对应的十进制为2。
练习阶段:
初级
代码
/*---------------------------------------
* 日期:2015-07-02
* 作者:SJF0115
* 题目:取给定正整数的指定bit位开始的指定长度的数据
* 来源:华为机试练习题
-----------------------------------------*/
#include "OJ.h"
#include <iostream>
using namespace std;
/*
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 tmp = input;
for(int i = 0;i <=(startbit-bitlen);++i){
tmp= tmp >> 1;
}//for
unsigned int result=0;
// bitlen位1 11111
for(int i = 0;i < bitlen;++i){
result=2*result+1;
}//for
tmp = tmp & result;
return tmp;
}