[华为机试练习题]41.取给定正整数的指定bit位开始的指定长度的数据

简介:

题目

描述: 接口说明

原型:

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;
}
目录
相关文章
|
2月前
|
算法 测试技术 C++
【数位dp】【C++算法】600. 不含连续1的非负整数
【数位dp】【C++算法】600. 不含连续1的非负整数
|
3月前
|
机器学习/深度学习 存储 算法
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
34 0
|
4月前
【每日一题Day299】LC2235两整数相加
【每日一题Day299】LC2235两整数相加
18 0
|
6月前
|
Serverless
华为机试HJ62:查找输入整数二进制中1的个数
华为机试HJ62:查找输入整数二进制中1的个数
|
6月前
华为机试HJ58:输入n个整数,输出其中最小的k个
华为机试HJ58:输入n个整数,输出其中最小的k个
leetcode 1356 根据数字二进制下1的数目排序
leetcode 1356 根据数字二进制下1的数目排序
56 0
leetcode 1356 根据数字二进制下1的数目排序
【每日一题Day99】LC1663具有给定数值的最小字符串 | 贪心
如果k−(n−i)∗26<=1,那么表示尾部全部插入z,没有分数剩余甚至还有同于,那么第i个字符可以插入的最小字符'a',贡献的分数为1
45 0
LeetCode 1356. 根据数字二进制下 1 的数目排序
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。
49 0
LeetCode每日一题——829. 连续整数求和
给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。
76 0
AcWing 26. 二进制中1的个数
AcWing 26. 二进制中1的个数
70 0
AcWing 26. 二进制中1的个数