![]() |
1
7
如果真的只有4位,那么最快的方法肯定需要一个查找表。毕竟只有16种不同的可能性。 |
![]() |
2
6
比特黑客 - bit twiddling hacks |
![]() |
3
4
我将把它下移并测试循环中最低有效位。使用32位掩码(或无符号int的任何长度)进行测试可能会更快。 /艾伦 |
![]() |
4
4
|
![]() |
5
1
如果它是.NET,你必须经常使用它,我会想要一个很好的流畅的界面。 我将创建以下类(对BitTools这个名称不太满意)。
你可以用以下方法:
对于每个(U)Int大小,您可以使另一个Int*Bits enum和正确的IsSet和IsBitSet重载。 编辑:我误读了,你说的是无符号整数,但在这种情况下是一样的。 |
![]() |
6
0
|
![]() |
7
0
不需要额外的位移位。不移位更有效,因为比较最低有效位和比较第二最低有效位一样有效,依此类推。同时进行位移位只是将所需的位操作增加一倍。
不管怎样,x86系统上的所有操作都是用32位寄存器完成的,因此单位比较和32位比较一样有效。 更不用说循环本身的开销了。
|
![]() |
8
0
|
![]() |
9
0
i、 例如,假设您以32位int的MSB开始。上半字节索引我将调用上半字节idxs,下半字节索引我将调用下半字节idxs。然后你需要给下一个元素加24,给上一个元素加28。下一个字节将进行类似的处理,只是偏移量将分别为16和20,因为该字节是8位“down”。 对我来说,这种方法似乎是合理的,但我很乐意证明是错误的:-) |
![]() |
10
0
|
![]() |
no one special · 32位整数缩放,无溢出 7 年前 |
![]() |
Benn Tan · 比特操作:更难翻动硬币 7 年前 |
![]() |
Ganesh Thampi · 使用位运算符将十进制转换为二进制 7 年前 |
![]() |
Ganesh Thampi · 使用位的奇偶程序 7 年前 |
![]() |
datapanda · 三维网格的莫顿反向编码 7 年前 |
![]() |
rubyquartz · 交换无符号短整数的字节 7 年前 |
|
John Proctor · C中位的掩蔽范围 7 年前 |
![]() |
Areg Sarvazyan · 从无符号int中提取位的函数 7 年前 |
|
user9505617 · 按位异或0xFFFFFFFF? 7 年前 |