3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
這應(yīng)該可以解決問(wèn)題。
int hob (int num)
{
if (!num)
return 0;
int ret = 1;
while (num >>= 1)
ret <<= 1;
return ret;
}
滾刀(1234)返回1024
滾刀(1024)返回1024
滾刀(1023)返回512

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
摘自Hacker's Delight:
int hibit(unsigned int n) {
n |= (n >> 1);
n |= (n >> 2);
n |= (n >> 4);
n |= (n >> 8);
n |= (n >> 16);
return n - (n >> 1);
}
此版本適用于32位整數(shù),但邏輯可以擴(kuò)展到64位或更高版本。

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
這可以通過(guò)現(xiàn)有的庫(kù)調(diào)用輕松解決。
int highestBit(int v){
return fls(v) << 1;
}
Linux手冊(cè)頁(yè)提供了有關(guān)此功能及其對(duì)應(yīng)于其他輸入類型的更多詳細(xì)信息。
- 3 回答
- 0 關(guān)注
- 533 瀏覽
添加回答
舉報(bào)