我在C#中实现了代码here以获取int的MSB。我不确定我需要用日志引用表和主代码将代码扩展到64位。
文中所说的唯一内容是需要再增加2个CPU操作,因此我推断这个变化很小。
答案 0 :(得分:1)
不需要更改表格。需要再增加一级if()
:
if (ttt = v >> 32)
{
if (tt = ttt >> 16)
r = (t = tt >> 8) ? 56 + LogTable256[t] : 48 + LogTable256[tt]
else
r = (t = ttt >> 8) ? 40 + LogTable256[t] : 32 + LogTable256[ttt]
}
else
{
if (tt = v >> 16)
r = (t = tt >> 8) ? 24 + LogTable256[t] : 16 + LogTable256[tt];
else
r = (t = v >> 8) ? 8 + LogTable256[t] : LogTable256[v];
}