我正在尝试使用C#在数字的二进制表示形式中找到第一个1(从右到左)的索引。例如,由于二进制中的100为:
0b1100100
第一个1在右边的第三位置,因此它应该产生3。
234应该产生2,0应该产生0,依此类推。
这是我当前的解决方案:
k < 1 ? 0 :(int)Math.Log(k & -k, 2) + 1;
有什么办法可以缩短它的时间?
1
显而易见的技巧是删除无关的空格。我看到您可以轻松删除的10个空格。
—
詹姆斯(James)
Convert.ToString(k,2).IndexOf("1")
是您想要的,还是类似的错误站点。
@ close-voters-为什么要投票?我认为这是一个热门的提示问题。还是在这方面我错过了任何规则更改?
—
Digital Trauma