![]() |
1
11
英特尔有专门的指令来查找最低或最高阶的集合位。 BSF bit twiddling hacks page 至少你可以使用一个半字节或字节表来加快速度。类似这样的内容(针对int进行了演示,但可以根据需要轻松地更改为longlong)。
|
![]() |
2
9
我发现最快的是
|
![]() |
3
4
|
![]() |
4
3
您可以使用
丑陋,但不涉及循环。 |
![]() |
5
2
实现一种二进制搜索怎么样? 查看由位和掩码值产生的低位,掩码值都在低位。如果该值为零,则知道最小的位位于数字的上半部分。 另一个聪明人把这东西切成两半,然后再去。 |
![]() |
6
2
这可能适用于32位。应该很容易扩展到64。
显然,如果有某种方法让硬件去做这件事,也就是说,如果有特殊的CPU指令可用,这就是方法。 |
![]() |
7
0
像这样的怎么样?它大大减少了循环的数量。
|
![]() |
8
0
我编写了两个函数,它们返回的结果与ffsll()相同。
|
![]() |
9
0
|
![]() |
10
-1
考虑变量x x&~(x-1)给出一个二进制数,该二进制数仅包含设置位,其余均为零
现在继续向右移位这个二进制数,直到该数字为零,然后计算移位的次数,这将给出最右边的设置位数。 |
![]() |
11
-3
如果是偶数,则最低阶位为第一位。
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 5 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |