问题标签 [hammingweight]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - Matlab:汉明权重的索引数组
a
包含索引及其出现。现在需要使用汉明权重更改索引,以便将具有相同汉明权重的索引相加。如何进行汉明权重索引?在 Matlab 中有任何现成的命令吗?
目标:通过汉明权重索引事物
sqlite - 在 sqlite 中计算汉明距离和权重
有没有一种在sqlite中计算汉明距离和重量的好方法?它支持按位运算符,但我想根据汉明权重对结果进行排序,并且 sqlite 不支持位计数。
更详细地说,假设我有这些行:
1011
1000
1100
0011
并且给定第一行(1011),我想得到最后一行(0011),如果你和它们,它有最多的 1。
在我的例子中,这些数字大约有 650 位长,我有大约 3500 行。
我发现这个解决方案适用于文本块,但我想要更优化的东西:
c++ - 如何有效地判断一个整数的汉明权重是否正好是一?
给定 C++03 中的 32 位或 64 位整数,确定是否恰好设置了一个位的有效方法是什么?(例如,值恰好是 1、2、4、8、16、32 等之一)C++ 03 库(或者如果没有,则 C++11)是否有任何内置函数可以在我碰巧遇到的任何硬件上有效工作上?我想将它用于在多次出现时出现频率越来越低的衰减消息。
c - 汉明重量(一个数字中的1个)混合C与组件
我试图计算一个数组中有多少个数字 1。
首先,我在 C lenguaje 中有一个代码(工作正常):
现在我需要使用 3-6 行代码将 do-while 循环转换为汇编。我写了一些代码,但结果不正确。(我是汇编世界的新手)
我正在使用带有英特尔处理器的 GCC(在 linux 上)。
algorithm - 区间的汉明权重
我的任务是计算区间 [1,10^16] 的 1 位数。对于这种情况,循环显然无法使用,我听说有一种算法可以解决这个问题。任何人都可以帮忙吗?
更一般地,区间 [1,n] 中的 1 位数量的算法会很好。
如果这有帮助,我认为区间 [1,2^n-1],n 个正整数的 1 位数是 n*2^(n-1)。
algorithm - 计算具有相同汉明权重的二进制数的所有排列的最快算法是什么?
我想要一种算法来计算具有给定汉明权重的固定大小二进制数的所有排列。例如,如果汉明权重为 2,二进制大小为 4,则有以下输出:
此类组合的数量C(n,r)
在此示例C(4,2)
中计算为 6。
请注意,您可以通过将数字从 0 增加到 2^n 来解决此问题,然后查看计数是否正常。但是,这不是一个快速的解决方案。我正在考虑使用 C++ 中的 bitset 类解决问题,我需要增加 N。
我想补充一点,这个问题有一个明显的递归算法。由于堆栈溢出,这不是一个好的答案。我从 Gosper 的 hack 中得到了很好的回答。虽然,我需要扩展输入并且可能稍后使用 MPI 实现,但我需要一个可扩展的库。Unsigned int 不够大,我更喜欢像 bitset 这样的可扩展且快速的库。该解决方案不适用于此处,而 bitset 库中没有添加。任何其他解决方案?
algorithm - 这两种位计数算法是否具有相同的时间复杂度?
下面是我在某个地方找到的算法(忘记了确切的位置,可能来自这个答案)来计算整数中设置的位数,即它的汉明权重。
(我碰巧在 PHP 中很方便,但这实际上可以是任何语言。)
如果我没记错的话,它在 O(1) 中运行——毕竟没有分支。
现在这是我自己编写的一个位计数函数,除了可读性之外,我认为它较差:
但是,它在哪些方面是劣质的?起初我认为“有一个循环,所以它应该在线性时间内运行”,但后来我意识到循环根本不依赖于输入的大小。无论 $i 的大小如何,迭代次数都保持不变。
因此,我想知道的是:
- 这两个算法真的可以说都在 O(1) 中运行吗?
- 如果是这样,是否有区分两者的措施?似乎第一个在某种程度上应该更好。
c# - 如何从 C# 调用 CPU 指令?
我的处理器(Intel i7)支持POPCNT instruction
并且我想从我的 C# 应用程序中调用它。这可能吗?
我相信我在某处读到它不是,但是如果 JIT 发现它可用,它会调用它,但是我必须调用什么函数可以用这样的指令代替?
Popcount 在一个循环中被调用数百万次,所以如果可能的话,我希望能够进行这种 CPU 优化。
c# - 在有限制的情况下寻找更有效的流行计数
该popcount
函数返回输入中 1 的数量。0010 1101
有popcount
4 个。
目前,我正在使用这个算法来获得popcount
:
这很好用,我要求更多的唯一原因是因为这个操作非常频繁地运行,我正在寻找额外的性能提升。
我正在寻找一种基于我的 1 将始终正确对齐的事实来简化算法的方法。也就是说,输入将类似于00000 11111
(返回 5)或00000 11111 11111
(返回 10)。
有没有办法根据这个约束做出更有效的popcount?如果输入是01011 11101 10011
,它只会返回 2 因为它只关心最右边的那些。似乎任何类型的循环都比现有解决方案慢。