`
SunnyYoona
  • 浏览: 361504 次
社区版块
存档分类
最新评论

[华为机试练习题]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;
}
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics