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

#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

取给定正整数的指定bit位开始的指定长度的数据的相关文章

@清晰掉 各种类型32位与64位下各类型长度对比

64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂):可以访问大型数据库.本文介绍的是64位下C语言开发程序注意事项. 1. 32 位和 64 位C数据类型 32和64位C语言内置数据类型,如下表所示: 上表中第一行的大写字母和数字含义如下所示:I表示:int类型L表示:long类型P表示:pointer指针类型32表示:32位系统64表示64位系统如:LP64表示,在64位系统下的long类型和pointer类型长度为64位.64位Li

Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2&lt;=N&lt;=1e7, 1&lt;=M&lt;=N, N-M&lt;=1E5) 输出答案除以1e8+7的余数。

/** 题目:Help Tomisu UVA - 11440 链接:https://vjudge.net/problem/UVA-11440 题意:给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数. 思路: lrjP338 由于x的所有素因子都>M:那么x与M!互质. 根据最大公约数的性质,对于x>y,x与y互质,那么x%y与y也互质. 由于N

getByClass--获取指定标签且class为指定的所有元素

ie不支持getElementsByClassName,所以要自己实现获取类名为className的所有元素. 平时我们在工作中的时候,经常需要获取指定某个标签下的具有某个class的所有元素. 通过下面这种方法能很快的将这些元素获取到. 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>getByClass--获取指定标签且class为

用Javascript取float型小数点后两位,例22.127456取成22.13,如何做?

1. 最笨的办法....... [我就怎么干的.........] 1function get()2{3    var s = 22.127456 + "";4    var str = s.substring(0,s.indexOf(".") + 3);5    alert(str);6} 2. 正则表达式效果不错 1<script type="text/javascript">2onload = function(){3    v

[转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件

原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件 折腾: C#中如何在右下角添加提示窗口,用于显示打开文件和文件夹 的过程中,需要实现,点击对应LinkLabel后,调用资源管理器,打开对应的文件夹. [

JS 比较日期相隔都少天&amp;&amp; 比较两个日期大小&amp;&amp;指定日期往前后推指定天数

//这些天常接触到有关于js操作日期事 就小结了一下,希望对你有帮助 function conversionDate(a,b){ var start =a.split('-'); var end = b.split('-'); //转换为date对象 var strDateS = new Date(start[0], start[1], start[2]); var strDateE = new Date(end[0], end[1], end[2]); var differ=parseInt(

Xilinx VDMA 24位流输出与32位AXI总线的内存 流数据关系

测试方法采用了VDMA仅有MM2S通道, 内存中的图像帧是用MicroBlaze核写入的一个colorbar. VDMA的mhs部分如下, 因为我的输出用了Digilent的HDMI核,而这个HDMI核是32位的,我自己写了个axis_24_32的位宽转换的ip,这个暂且按下不表. BEGIN axi_vdma PARAMETER INSTANCE = axi_vdma_0 PARAMETER HW_VER = 5.04.a PARAMETER C_USE_FSYNC = 0 PARAMETER

c# 用正则表达式在指定的字符串中每隔指定个数的文字插入指定字符串

public static string AddNewLine(string inString,int num,string addString="\r\n") { return Regex.Replace(inString, string.Format(@".{{{0}}}", num), "$0"+addString); } c# 用正则表达式在指定的字符串中每隔指定个数的文字插入指定字符串

在JSP使用EL中判断指定元素是否存在于指定集合中

在JSP使用EL中判断指定元素是否存在于指定集合中 1.问题描述 在JSP页面中使用EL表达式判断一个指定元素是否存在于指定集合中? 2.问题解决 eg:指定集合:collection:{1,2,3,4,45,6,7,},指定元素:4 <!-- set集合,存储测试值存在于集合否? --> <c:set var="iscontain" value="false" /> <!-- 原始集合:items,集合元素 :var--> &l