bit-manipulation相关内容

位摆弄黑客:最有效的方式来删除一个比特的每n位?

下面是我的问题: 我需要做的是非常有效的(我需要做此操作数十亿倍的超级计算机)的 C 或 C ++ 11 。 N 和 N 被称为在编译时(模板参数)。什么是最有效的算法来做到这一点? 下面是一个例子: 的#include<的iostream> #包括< climits> #包括< type_traits> #包括<位集合> 模板<无 ..
发布时间:2015-11-30 22:27:25 C/C++开发

在生成位版本的所有组合

我想生成比特重presentation所有可能的组合(不重复)。我不能使用像升压或STL :: next_combination任何库 - 它必须是我自己的code(计算时间是非常重要的) 下面是我的code(从那些计算器用户修改): INT组合=(1<< K) - 1; INT new_combination = 0; INT变化= 0; 而(真) ..
发布时间:2015-11-30 22:20:24 C/C++开发

寻找失踪数从4十亿(再次)

似乎已经问了一个问题的很多次即将检测缺失的数量在4个十亿的数字。 该recomended方法似乎是使用一个bitset(当内存约束是问题的一部分)。 一个例子文章是这样的:我的问题是:该位集合的方法似乎隐含asume的数字是非阴性。由于在后我联系到一个例子,有在Java中,这code片断: INT基数= 8; byte []的位域=新的字节[为0xffffffff /基数]。 无效F()抛 ..
发布时间:2015-11-30 22:13:34 Java开发

什么是背后的基本原理(X%64)==(X放大器; 63)?

可能重复: 位运算和代替模运算 有人能解释,使双方的前pressions当量的理由是什么?我知道这只能是因为64是二的幂,但我怎么能在逻辑上或数学上的分工去按位和? 解决方案 操作 X%64 返回余数时, X 是64,这(假定X> 0)必须是一个介于0和63。让我们来看看这二分: 63 月 = 0011 1111 B 64 月 = 0100 0000 B 您可以看到,64的倍数的二进 ..
发布时间:2015-11-30 21:52:59 C/C++

最简单的转换为十进制浮点到位再presentation手动基于IEEE 754,不使用任何库方式

我知道有一些方法可以读取用书面库一个IEEE 754浮点数的每一位。 我不希望这样,我希望能够为手动转换为十进制浮点基于IEEE 754。二重presentation 我理解IEEE 754是如何工作的,我只是想运用它。 我问这个问题,在这里只是想看看我的方式是正常的还是愚蠢的,我也想知道如何快速的PC做它。 如果我给一个十进制浮点的字符串中的的,我需要弄清楚什么的电子的是,什么的 M 的 ..
发布时间:2015-11-30 21:49:41 C/C++

如何将分裂成按位移位两当电源?

我有以下的部门,我需要经常做: INT指数= POS / 64; 司可能是昂贵的,在CPU的水平。我希望有一种方法可以做到这一点与按位转变。我也想了解,你可以从分工转移,换句话说,我不希望只是记住按位EX pression。 解决方案 INT指数= POS>> 6 将做到这一点,但这是不必要的。任何合理的编译器会做这样的事情你。当然,太阳/ Oracle的编译器。 ..
发布时间:2015-11-30 21:41:31 Java开发

油滑办法扭转了一些在Python中(二进制)的数字?

我要寻找一个灵活的功能反转的一个数字的二进制重新presentation数字。 如果 F 是这样的功能我会 INT(逆转(S),2)== F(INT(S,2))只要s是零和的从1开始的字符串 现在,我使用拉姆达X:INT(''联接(逆转(斌(X)[2:])),2) 这是确定尽可能简明而言,但似乎这样做的pretty的迂回的方式。 我在想,如果有一个更好的(也许更快)的方式与按位运算符,什 ..
发布时间:2015-11-30 21:28:02 Python

什么是要遍历的数量通过掩模的所有可能值的好方法?

给定一个位掩码其中该组比特表示,其中另一数目可以是一或零和非设定位必须是在该次数为零。什么是遍历所有可能的值的好办法? 例如: 000返回[000] 001的回报[000,001] 010的回报[000,010] 011的回报[000,001,010,011] 100的回报[000,100] 101返回[000,001,100,101] 110的回报[000,010,100,110] 111 ..
发布时间:2015-11-30 21:27:13 C/C++

最快的比较位集路(小于运营商对位集)?

什么是最优化的方式来实现< 运营商的std :: bitset的相应的比较再presentation无符号整数(它应该为超过64位位集)? 一个简单的实现是: 模板<的std ::为size_t N'GT; 布尔运算符<(常量的std :: bitset的n种>&放大器; X,常量的std :: bitset的n种>&安培; Y) { 的for(int i ..
发布时间:2015-11-30 21:25:40 C/C++开发

找到的最高位组没有循环一个32位数字的指数明显

下面是一个艰难的(至少我的日子不好过:P): 找到的最高位组的一个32位数字的指数,而无需使用任何环路。 解决方案 递归: INT firstset(INT位){ 返回(位和放大器;为0x80000000)? 31:firstset((比特其中;&小于1)| 1) - 1; } 假设 [31,...,0] 索引 返回-1,如果没有位设置 | 1 prevent ..
发布时间:2015-11-30 21:21:59 C/C++

通过bitmasking二进制搜索?

我已经使用这个算法,多次到二分查找了 int类型或多头。基本上,从我做起 Long.MinValue 和 Long.MaxValue ,并决定设置位为我日根据我最大化(或最小化)功能的价值定位。在实践中,这真可谓是快(正好63 * 2位操作),更容易code和避免了许多下面是我在斯卡拉算法: / ** * @返回一些(X),使得x是最大数量,对于该函数f(x)为真 *如果没有找到这样的x, ..
发布时间:2015-11-30 21:10:50 C/C++

增加组数字,使得异或总和为0

我需要一些帮助,我归纳为以下的一个问题。我有N个30比特数,使得所有这些的组合异或为非零。我需要一个非负(0或更多)值添加到每个N个数字,这样,新的数字的组合的异或变为0时,限制下的总加法值(不相加次数)最小化 例如,如果我有数字(01010) 2 ,(01011) 2 和(01100) 2 为三个数字(N = 3)。然后,他们的组合是异或(01101) 2 。我们可以按如下方式添加一些数字: ..

宝石迷阵位主板采用重力

我试图做一个宝石迷阵级联模拟器位板。到目前为止,我已经能够检测和清除的比赛,但现在我需要有珠宝掉下来。我的状态被重新由位板,一个用于每个类型的宝石的列表psented $ P $。我有所有被删除的珠宝的面具。 是否有可能使用一些位魔法来做到这一点? 两个初始位板(让我们姑且认为只有两种类型的宝石,它是一个4×4板,而不是8×8)为例。第一位是左下方,第四位为左上角,而最后一位是右上 0 0 ..
发布时间:2015-11-30 20:56:18 Python

通过逐位生成想要的号码或

给定N个整数区间[lo_i,hi_i。 各区间选择一个数字,这样按位或将成为给定数量X.(这并不重要,如果结果有更多的1位比X;也就是说,如果生成的编号为Y,(X安培; Y)= = X应持有) 解决方案 让我们来概括这个问题一点点。我打算写位运算符像OR和AND和SR(右移)。 给定一个自然数X,间隔[lo_1,hi_1],...,[lo_N,hi_N]选自自然数和比特b在{0,1}, ..
发布时间:2015-11-30 20:52:24 C/C++

这是最有效的方式来提取任意范围位从字的连续序列?

假设我们有一个的std ::矢量,或任何其他序列容器(有时这将是一个双端队列),其中存储 uint64_t中元素。 现在,让我们来看看这个载体作为尺寸()* 64 连续位序列。我需要找到由比特构成的字给定 [开始,结束)的范围,因为结束 - 开始< = 64 所以一句话适合。 我现在将溶液找到两个单词,其部分将形成的结果,并分别口罩和将它们组合。因为我需要这是尽可能提高效率,我试图cod ..
发布时间:2015-11-30 20:50:07 C/C++开发

使用逐比特反转

我试图做到位反转一个字节。我用下面在code 静态INT BitReversal(INT N) { INT U0 = 0x55555555; // 01010101010101010101010101010101 INT U1 = 0x33333333; // 00110011001100110011001100110011 INT U2 = 0x0F0F0F0F; // ..
发布时间:2015-11-30 20:49:38 C/C++

如果评估整数POT(两个动力)

可能显示的文件: 如何检查是否一个数是电源2 我需要一个函数体原型: 布尔isPOT(INT X); 那么它将返回如isPOT(3)= FALSE,但isPOT(8)= TRUE 什么是最pretty的/简洁的算法?什么是最有效的? PS:我很惊讶,我找不到所以这个问题,所以我完全期待有人来检测一些重复 PPS:可有人请创建POT,NP​​OT,幂的两个标签 解决 ..
发布时间:2015-11-30 20:48:59 C/C++

返回位阵列的第i个组合

由于固定长度的0和1包含的数位阵列,我怎么可以安排所有可能的组合,使得返回第i个组合需要尽可能少的时间呢? 它并不重要它们被返回的顺序。 下面是一个例子: 数组长度= 6 0 = 4的数 1秒= 2的数 可能的组合(6!/ 4!/ 2!) 000011 000101 000110 001001 001010 001100 010001 010010 010100 011 ..
发布时间:2015-11-30 20:24:35 C/C++

O型计算的汉明权(1)

在二重presentation,汉明权重为1的数量。我遇到了网络,发现了一个O(1)的回答是: V = - ((V>> 1)及0x55555555); V =(V&安培; 0x33333333)+((V>→2)及0x33333333); 诠释计数=((V +(V>→4)及0xF0F0F0F)* 0x1010101)GT;> 24; 不过,我不太了解该算法 ..
发布时间:2015-11-30 16:33:39 C/C++