bit-manipulation相关内容

获得拖尾1比特数

有没有有效的按位操作,我可以做的就是,一个整数结尾设置位是多少?例如11 10 = 1011 2 将有两个尾1位​​。 8 10 = 1000 2 是0尾1位。 对此有更好的算法比线性搜索?我实施随机化的跳跃列表,并使用随机数插入时,它以确定的元件的最大电平。我与32位整数处理在C ++中。 编辑:汇编是出了问题,我感兴趣的是一个纯C ++的解决方案 解决方案 以从伊格纳西奥巴斯克斯 - ..
发布时间:2015-11-30 14:51:33 C/C++开发

什么是测试一个数是否是2在C ++中功率最简单的方法是什么?

我需要这样的功能: //返回true当且仅当“n”为2的幂,如: // is_power_of_2(16)=>真is_power_of_2(3)=>假 布尔is_power_of_2(INT N); 任何人都可以建议我怎么能写呢?你能告诉我一个很好的网站,在那里这种算法可以找到? 解决方案 “(N及(N - 1))== 0”是最好的。但是,请注意,它会错误地返回tr ..
发布时间:2015-11-30 14:46:51 C/C++开发

确定一个字符串有没有使用额外的数据结构,并没有小写字符假设所有的独特字符

这是在的破解编码面试的书的问题之一由盖尔Laakmann麦克道尔: 实现的算法来确定一个字符串有所有不同的字符。如果你不能使用哪些额外的数据结构? 的作者写道: 我们可以用一个位向量,减少我们的空间使用一点点。我们假定,在低于code,该字符串只有小写'A'到“Z”。这将允许我们使用只是一个单一的int。 笔者有​​这样实现: 公共静态布尔isUniqueChars(字符串str ..
发布时间:2015-11-30 14:32:26 Java开发

一个字节数组的基础-N编码

这是前两天我碰到这codeReview 为基础-36编码的字节数组。然而,随后没有触及解码回一个字节数组,或者可能重用的答案来执行不同的基地(基数)的编码问题的答案。 有关链接的问题的回答使用的BigInteger。因此,尽可能实现得好,基础和数字,可以参数化。 使用的BigInteger的问题虽然是我们对待我们的输入作为一个假设的整数。然而,我们的输入,一个字节数组,只是一个不透明的值系列。 ..
发布时间:2015-11-30 14:31:13 C#/.NET

位在整数时间复杂度计算算法(布莱恩Kernighan的)

有人可以解释为什么布赖恩Kernighan的算法需要O(日志N)在一个整数设置位计​​数(1秒)。一个简单的实现这个算法是低于(JAVA中) INT COUNT_SET_BITS(INT N){ 诠释计数= 0; 而(N!= 0){ N'安培; =(N-1); 算上++; } } 我理解它是如何工作通过清除最右边的设置位一个接一个,直到它变成0,但我不知道我们如何为O(log N)。​​ 解决 ..
发布时间:2015-11-30 14:23:41 C/C++

其异或为最大的数组两个元素

由于整数数组,你必须要找到两个元素的XOR是最大的。 有采摘每个元素与其它元素进行异或运算,然后比较结果找到一双--just幼稚的做法。 除此之外,有没有什么有效的算法? 解决方案 我想我有一个为O(n LG U)的算法对于这一点,其中U是人数最多的。我们的想法是类似user949300的,但有一个更详细一点。 的直觉如下。当你进行异或两个数,以获得最大的价值,你想有一个1在尽可能高的位 ..
发布时间:2015-11-30 14:12:05 C/C++

检查数字是否使用按位运算符是正还是负

我可以检查一个数是奇数/偶数使用位运算符。我可以检查一个数字是否为正/零/负,而无需使用任何条件语句/运营商一样,如果/三元等。 可以在相同的使用按位运算符和C或C ++中的一些伎俩做? 解决方案 我可以检查一个数字是否为正/零/负,而无需使用任何条件语句/运营商一样,如果/三元等。 当然: 布尔is_positive =号> 0; 布尔is_negative =号< 0 ..
发布时间:2015-11-30 14:02:44 C/C++开发

找到三个数字只出现过一次

在长度n,其中n = 2K + 3,即一个序列有k个唯一的数字两次出现 和三个数字只出现过一次。 现在的问题是:如何找到只出现过一次的三个独特的数字 例如,在序列1 1 2 3 6 6 5 7 7三个唯一号码2 3 5 请注意: 3'; =正&其中; 1e6个和数目的范围从1至2E9 内存限制:1000KB,这意味着我们不能存储整个序列。 方法我都试过(内存限制超过): 我初始化一棵树 ..
发布时间:2015-11-30 13:57:42 C/C++

如何计算一个三维莫顿数(交织的3个整数的比特)

我正在寻找一个快速的方法来计算一个3D莫顿数。这个网站有一个基础的魔法数字把戏做它的2D莫顿的数字,但它似乎并不明显如何将其扩展到3D:所以基本上我有我想要交错与操作最​​少数量的一个30位的数字3的​​10位数字。 解决方案 您可以使用同样的技术。我假设变量包含32位整数,最高的22位设置为 0 (这是更严格的比需要一点)。对于每个变量 X 包含3个10位整数,我们执行下列操作之一: X ..
发布时间:2015-11-30 13:40:18 C/C++

发现两个数的最大值,但没有使用的if-else或任何其他比较运算符

查找两个数中的最大值。你不应该使用的if-else或任何其他比较操作。我发现在网上布告栏这个问题,所以我想我应该问的StackOverflow 例 输入:5,10 输出:10 我发现这个解决方案,有人可以帮助我了解code这些行 INT GetMax的(INT A,INT B){ INT C = A - B; 时int k =(c取代;> 31)及为0x1; ..
发布时间:2015-11-30 13:27:56 C/C++

如何添加两个数字,而无需使用++或+或者其他算术运算符

我如何添加两个数字,而无需使用++或+或任何其他算术运算符? 这是一个问题很久以前在一些校园里采访要求。不管怎么说,今天有人问对于一些位操作的问题,并在回答一个美丽的quide的 斯坦福位操作 被提到。我花了一些时间来研究它,并认为有实际上可能是一个问题的答案。我不知道,我无法找到一个。有没有一个答案存在? 解决方案 这是我已经写了前一段时间的乐趣。它采用了补重新presentation和使 ..
发布时间:2015-11-30 13:26:25 C/C++开发

最好的算法比特反转(从MSB-> LSB为LSB-> MSB)在C中

什么是最好的算法来实现以下目标: 0010 0000 => 0000 0100 的转换是从MSB-> LSB到LSB-> MSB。所有位必须扭转;也就是说,这是的没有的字节顺序-交换。 解决方案 注意:下面所有的算法都是C,但应该可以移植到你选择的语言(就是不看我当他们没有那么快:) 选项 低内存(32位 INT ,32位机)(上接的这里): 无符号整型 反向(注册unsign ..
发布时间:2015-11-30 13:13:47 C/C++

如何计算在一个32位整数集的比特数?

8位重presenting 7号是这样的: 00000111 三位设置。 哪些算法来确定比特组中的32位的整数的数目 解决方案 这就是所谓的“海明重量” “popcount”或“侧身除”。 在'最好'的算法实际上取决于你是哪个CPU和你的使用模式是什么。 某些CPU有一个内置的指令做和其他人对位向量起作用的并行指令。并行指令(像86的 POPCNT ,在那里它支持的C ..
发布时间:2015-11-30 13:11:37 C/C++

使用逻辑bitshift的RGB值

我是有点幼稚,当谈到按位逻辑和我有什么可能是一个简单的问题...基本上,如果我有这个(是动作,但可以在许多语言适用): VAR颜色:UINT = myObject.color; 无功红:UINT =颜色>>> 16; VAR绿色:UINT =颜色>>> 8安培; 0xFF的; VAR蓝色:UINT =颜色和放大器; 0xFF的; 我想知道究竟是什么` ..
发布时间:2015-11-28 12:51:45 跨浏览器开发

转换64位数组的Int64或ULONG C#

我有位的int数组(长度始终为64),如: 1110000100000110111001000001110010011000110011111100001011100100 和我想在一个的Int64 (或ULONG?)可变写。怎么办呢? 我试图创建一个 BitArray ,然后让 INT ,但它抛出系统.ArgumentException ,CopyTo从上线: 私有静态的Int64 ..
发布时间:2015-11-28 12:17:07 C#/.NET

优化的机会,以下位操作?

你觉得有空间的功能haswon优化(见下文)? 我认为,改变从 __的Int64 参数类型为无符号__int64 提出的功能更快,因此我thougt也许还有优化的机会。 的详细信息: 我写一个连接四游戏。最近我用事件探查器的很困的,并承认该功能的 haswon 的使用太多的CPU时间。该函数使用连接四板的棋盘,再presentation一个球员。该函数本身,我发现在 fourstones 基准 ..
发布时间:2015-11-28 12:04:16 C/C++开发

得到内的64位的整数位位置的数组

好吧,这听起来有点复杂,但是这是我想要做的: 在以如 10101010101 并返回 {0,2,4,6,8,10} - 所有位并将其设置的位置的数组 这是我的code: UINT DQBitboard :: firstBit(U64棋盘) { 静态const int的index64 [64] = { 63,0,58,1,59,47,53,2, 60,39,48,27 ..
发布时间:2015-11-28 11:54:08 C/C++开发