我正在编写一个桌面游戏引擎,我写了一个 10x10 位板类。该类包含两个 uint64&#39>的数组,并实现各种位操作。我尚未实施的一项重要操作是lsb()
。我知道我可以对第一个整数执行lsb()
,如果它 0 就可以在第二个整数上执行lsb()
。但是,检查它是否 0 似乎是多余的。实施char s = lsb64(b_[0]);
if (s == 0 && b_[1] != 0) {
s = lsb64(b_[1]) + 64;
}
return s;
的最有效方法是什么?
编辑: 我目前的代码是:
/Users/svp/mytweak/theos/bin/logos.pl line 364.
lsb64()这里返回1 +位的索引
我可以提高性能吗?注意if条件几乎总是假的。
答案 0 :(得分:0)
如果您希望大多数输入将位设置为低64位,则必须分析执行情况。以下内容可避免两次lsb64
次呼叫。
return b_[0] ? lsb64(b_[0]) : (b_[1] ? 64 + lsb64(b_[1]) : 0);
可以在related question中找到lsb64
的可能解决方案。