的上級電力的AS3實現我一直在努力實施圍捕發電在AS3下面的鏈接概述2算法。兩種算法
http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
public static function upperPowerOfTwo(num:uint):uint
{
// if(num == 1) return 2;
num--;
num |= num >> 1;
num |= num >> 2;
num |= num >> 4;
num |= num >> 8;
num |= num >> 16;
num++;
return num;
}
算法對於大多數我測試過的值的偉大工程。應該指出的是給出0的輸入值這在技術上是不正確的時候,但我確定與輸出這將返回0。我不確定的是,當給定的輸入1我得到和輸出爲1.
我在想,這必須是AS3和其wonky uint實施的警告,但我似乎無法數字出來。我也嘗試使用>>>邏輯移位運算符得到相同的結果。
我的C是有點生疏,但我不知道如何做到這一點即使在返回C. 2誰能給我解釋一下怎麼回事錯在這裏?我認爲,如果1的輸入是它會在上面的鏈接被提及的一個特例。
我看到這個功能好幾次。我根本不喜歡它。幾乎整個可存儲值的上半部分都會導致0.這是很多值的丟失......不幸的是,這只是沒有解決方案。這個功能確實像@TonyK指出的那樣起作用。 1不會返回2,因爲1位被inital'num - ; stomped給你0。'num | ='行然後不做任何事,然後'num ++'將你再次置於1 。 – 2014-07-10 23:22:06