0
我在C#中實現了代碼here以獲取int的MSB。我不確定我需要用日誌參考表和主代碼來將代碼擴展到64位。爲Log_2擴展位破解爲64位
文中所說的唯一的事情就是需要2個CPU的操作,所以我推斷這個更改是次要的。
我在C#中實現了代碼here以獲取int的MSB。我不確定我需要用日誌參考表和主代碼來將代碼擴展到64位。爲Log_2擴展位破解爲64位
文中所說的唯一的事情就是需要2個CPU的操作,所以我推斷這個更改是次要的。
該表不需要改變。需要更多等級的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];
}
完美!謝謝。 – IamIC 2011-03-18 13:49:06
它被標記爲C,但您使用的是C#嗎? – hirschhornsalz 2011-03-18 12:54:35
源代碼是C.我將轉換爲C#。我不是要求某人爲我這麼做......我如何以64位(C語言)實現C語言。 – IamIC 2011-03-18 13:12:58
假設你在一種x86體系結構上,我只使用bsr指令。在gcc中它可以用__builtin_clzll()。這用一條指令計算對數......不幸的是我不知道如何將它轉換爲C#。 – hirschhornsalz 2011-03-18 13:32:14