相关疑难解决方法(0)

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

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

00000111
Run Code Online (Sandbox Code Playgroud)

设置三位.

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

algorithm binary bit-manipulation hammingweight iec10967

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

计算.Net BitArray类中设置的位

我正在实现一个库,我广泛使用.Net BitArray类,需要等效的Java BitSet.Cardinality()方法,即返回设置的位数的方法.我正在考虑将其实现为BitArray类的扩展方法.平凡的实现是迭代和计数位集(如下所示),但我希望更快的实现,因为我将执行数千个集合操作并计算答案.有比下面的例子更快的方法吗?

count = 0;

for (int i = 0; i < mybitarray.Length; i++)
{

  if (mybitarray [i])
    count++;
}
Run Code Online (Sandbox Code Playgroud)

.net algorithm bitarray

20
推荐指数
2
解决办法
8076
查看次数

如何仅使用Bitwise运算符实现Bitcount?

任务是仅使用按位运算符实现位计数逻辑.我的工作正常,但我想知道是否有人可以提出更优雅的方法.

只允许使用Bitwise操作.没有"if","for"等

int x = 4;

printf("%d\n", x & 0x1);
printf("%d\n", (x >> 1) & 0x1);
printf("%d\n", (x >> 2) & 0x1);
printf("%d\n", (x >> 3) & 0x1);
Run Code Online (Sandbox Code Playgroud)

谢谢.

c bit-manipulation

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

给定IP地址和子网掩码,如何计算CIDR?

好吧,我似乎无法弄明白:给出以下内容:

IP address = 192.168.1.0
Subnetmask = 255.255.255.240

使用c#,如何计算CIDR表示法192.168.1.0/28?有没有一种简单的方法来实现这一目标?我错过了什么吗?

谢谢!

.net c# ip-address subnet

5
推荐指数
3
解决办法
9283
查看次数

我想计算所有二进制数,直到 x 位和 y 位

有没有一种方法可以轻松计算具有特定数量的设置位的所有数字的序列?

例如,我想将所有 2 位数字设置为最多 4 位:

3: has 2 bits set to true
5: ,,
6: ,,
9: ,,
10: ,,
12: ,,
Run Code Online (Sandbox Code Playgroud)

有没有办法在不手动计算位数的情况下确定这些数字?

编辑:数字的顺序并不真正相关。我确实想知道获取所有这些的最快方法,尽管对于特定的位数设置和最大位数。(我不需要可以确定此序列中第 n 个数字的方法)

Edit2:我想要的原因是能够像这里完成的那样获得列表中元素的组合:值列表的所有可能的组合。此解决方案将提供所有组合,其中我只想要具有 8 个唯一值的组合。

c# math

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