![]() |
1
3
我不认为是1<<32包装的情况(否则,为什么2<<31也不包装?)相反,我认为内部模32应用于第二个运算符,因此1<<32实际上等于1<<0。另外,考虑将参数类型从“int”更改为“unsigned int”。要在不遇到“1<<32”问题的情况下获得“一”的值,可以执行以下操作:
我不相信这种操作有任何“标准”方法。我确信还有其他方法可以用不同的方式使用位运算符来获得相同的结果,但是您的算法和其他算法一样好。 尽管如此,可维护性和文档也很重要。您的函数将受益于用注释记录的算法,特别是解释如何使用位异或——这很聪明,但一眼就不容易理解。 |
![]() |
2
5
我认为如果不编写汇编程序,就不能提高效率。 您可以提高可读性并解决溢出问题,更改一些小东西:
更高效的汇编程序版本(VC++):
|
![]() |
3
2
很好:我试过这个替代版本,但你的测试速度快了30%:
|
![]() |
4
1
广义GRB Fnieto形式…
|
![]() |
5
0
我认为它几乎不可能更有效率。此外,位运算比任何代数运算都快得多。 |
![]() |
6
0
|
![]() |
7
0
UIT32 复制_位(uint32_t dst、uint32_t src、uint8_t end_位、uint8_t start_位) {
} |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |