#include "OJ.h" #include <iostream> #include <vector> 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) { /*在这里实现功能*/ int moveBit = startbit + 1 - bitlen;//为何右移的位数是这个数,而不是startbit, 有些不太懂? //int moveBit = startbit+1; int k =1; int sum =0; for (int i =1; i <= bitlen; ++i) { sum += k; k *=2; } int result = (input >> moveBit) & sum; return result; } int main() { cout<<GetBitsValue(4, 2, 1)<<endl; return 0; }
时间: 2024-12-28 08:44:41