"biginteger"类的有效最低有效设置位
Efficient least significant set bit of "biginteger" class
我正在编写一个桌面游戏引擎,我编写了一个10x10位板类。该类持有一个包含两个uint64 的数组,并实现各种位操作。我还没有实现的一个重要操作是lsb()
。我知道我可以在第一个整数上做lsb()
如果它是0就在第二个整数上做。然而,检查它是否为0似乎是多余的。实现lsb()
最有效的方法是什么?
编辑:我现在的代码是:
char s = lsb64(b_[0]);
if (s == 0 && b_[1] != 0) {
s = lsb64(b_[1]) + 64;
}
return s;
lsb64()这里返回1 +位
的索引我可以改进性能吗?注意if条件几乎总是为假。
如果您希望大多数输入将位设置在较低的64位,则必须对执行进行分析。下面避免了两次lsb64
调用。
return b_[0] ? lsb64(b_[0]) : (b_[1] ? 64 + lsb64(b_[1]) : 0);
lsb64
的可能解决方案可以在相关问题中找到。
相关文章:
- 最高有效数字侧的第N位
- 如何在整数中找到最低有效位(LSB)的位置?c ++
- Qt 错误:QSqlQuery::value:尝试从表中检索统计信息时未定位在有效记录上 (QComboBox)
- 将一个数字拆分为多个数字,每个数字只有一个有效位
- 基于整数向量执行位排列的有效方法?
- 在手臂霓虹灯中有效地重新洗牌和组合 16 个 3 位数字
- 有效地随机打乱单词序列的位
- 在手臂霓虹灯中有效地积累符号位
- 获取两个无符号整数 C++ 乘积的高 32 位的有效方法
- 使用for循环制作位图的最简单和最有效的方法
- 大多数内存有效的方法是在C 中转置大文件
- 通过摆脱其他所有位来有效收缩数据
- 将所有位低于最重要的设置位零的最有效方法是什么?
- 有效地对整个内存块进行位移位
- 有效地从32位数据类型中删除2位
- 从前期浮动RGBA转换为8位RGBA的有效方法
- 改变std :: bitset中一系列位值的最有效方法
- Exe不是有效的win32应用程序,但在64位上运行
- 检查 Gdiplus::Bitmap::FromFile 是否返回了有效的位图
- "biginteger"类的有效最低有效设置位