|
|
1
1
|
|
2
0
|
|
|
3
0
这是我能做的最好的了……根据我的评论,在32位环境中运行这个程序会浪费一些时间(我不知道有多少)。如果你担心性能 首先将数据转换为uint对您有益。 棘手的问题。..甚至可以将其封送为C++,但这完全取决于您的应用程序。很抱歉,我无法提供更多帮助,也许其他人会看到我错过的东西。 我试过了。 |
|
|
4
0
(使用查找表进行翻译)
您必须进行8*(64位整数的数量)求和
与单纯的实现相比,这种redcuce速度提高了8倍,因为它每次可以实现8位。
这只适用于最多256个输入,因为它使用无符号char来存储数据。如果你有更长的输入字符串,你可以更改此代码以容纳最多2^16个比特计数,并将spped减少2 |
|
|
5
0
|
|
|
6
0
另一种可能有利可图的方法是构建256个元素的阵列, 它对递增计数数组时需要采取的操作进行编码。 这是一个4元素表的示例,它做2位而不是8位。
然后,算法退化为:
基于这个小例子,应该可以扩展到您想要的大小。我认为可以使用另一个程序来生成bitToSubscript数组的源代码,这样就可以在程序中简单地对其进行硬编码。
|
|
7
0
http://ideone.com/eNn4O (需要更多的测试用例) |
|
|
8
-1
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetNaive 其中之一
请记住,此方法的复杂性约为O(log2(n)),其中n是计数位的数字,因此对于10个二进制文件,它只需要2个循环 你可能应该采用用64位算术计算32位并将其应用于单词的每一半的方法,即2*15+4条指令
如果你有支持sse4,3的处理器,你可以使用POPCNT指令。 http://en.wikipedia.org/wiki/SSE4 |
|
no one special · 32位整数缩放,无溢出 7 年前 |
|
|
Benn Tan · 比特操作:更难翻动硬币 8 年前 |
|
|
Ganesh Thampi · 使用位运算符将十进制转换为二进制 8 年前 |
|
|
Ganesh Thampi · 使用位的奇偶程序 8 年前 |
|
|
datapanda · 三维网格的莫顿反向编码 8 年前 |
|
|
rubyquartz · 交换无符号短整数的字节 8 年前 |
|
|
John Proctor · C中位的掩蔽范围 8 年前 |
|
|
Areg Sarvazyan · 从无符号int中提取位的函数 8 年前 |
|
|
user9505617 · 按位异或0xFFFFFFFF? 8 年前 |