相关疑难解决方法(0)

如何计算32位整数中的设置位数?

代表数字7的8位看起来像这样:

00000111
Run Code Online (Sandbox Code Playgroud)

设置三位.

什么算法来确定32位整数中的设置位数?

algorithm binary bit-manipulation hammingweight iec10967

838
推荐指数
31
解决办法
52万
查看次数

有人能解释一下这个GetCardinality方法在做什么吗?

我一直在寻找Lucene.NET的分面搜索,我在这里找到了一个很好的例子,它解释了一个相当大的数量,除了它完全忽略了检查位数组中项目基数的功能.

任何人都可以告诉我它正在做什么吗?我不理解的主要问题是为什么bitsSetArray按原样创建,它用于什么以及所有if语句如何在for循环中工作.

这可能是一个很大的问题,但我必须先了解它是如何工作的,甚至可以考虑在我自己的代码中使用它.

谢谢

public static int GetCardinality(BitArray bitArray)
    {
        var _bitsSetArray256 = new byte[] {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, …
Run Code Online (Sandbox Code Playgroud)

c# lucene.net faceted-search

6
推荐指数
2
解决办法
2313
查看次数

在UInt32中计算设置位的最快方法是什么

如何在UInt32不使用查找表的情况下计算设置位数(即计算1的数量)的最快方法是什么?有没有办法计算O(1)

c# bits count set uint32

6
推荐指数
4
解决办法
1万
查看次数

NASM:计算32位数中的多少位设置为1

我有一个32位数字,想知道有多少位是1.

我在考虑这个伪代码:

mov eax, [number]
while(eax != 0)
{
  div eax, 2
  if(edx == 1)
  {
   ecx++;
  } 
  shr eax, 1
}
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?

我在x86处理器上使用NASM.

(我刚开始使用汇编程序,所以请不要告诉我使用extern库中的代码,因为我甚至不知道如何包含它们;))

(我刚刚发现如何计算32位整数中的设置位数?这也包含我的解决方案.还有其他解决方案,但不幸的是我似乎无法弄清楚,我将如何在汇编程序中编写它们)

x86 assembly bit-manipulation nasm

4
推荐指数
3
解决办法
9716
查看次数

计算一个字节中"打开"的位数

可能的重复:
计算整数中的设置位数
最佳算法来计算32位整数中的设置位数?

这是一个考试问题,这就是我所有的 - "计算"在一个字节中"的数量""开"意味着1,我假设.我是否需要创建一个BitArray,随机填充它然后迭代它或者有不同的方式吗?

c# algorithm

1
推荐指数
1
解决办法
8210
查看次数