RT,比如輸入10返回16, 輸入24返回32,等等.
注意,是使用位操作且沒有循環(huán),也不用表驅(qū)動等等.因為這個操作要經(jīng)常進行,要保證高效,所以不能使用循環(huán)(別跟我說用遞歸,熟悉算法和計算機本質(zhì)的人都知道遞歸和循環(huán)本質(zhì)是一樣的:);同時,因為不知道需要計算的數(shù)據(jù)到底有多大,采用表驅(qū)動的辦法也不可行.
我在網(wǎng)上
發(fā)帖,最終得到了一個很BT的答案:
int fun(int v)
{
float f = (float)(v - 1);
return 1 << ((*(unsigned int*)(&f) >> 23) - 126);
}
但是我不知道這個算法的原理是什么,貌似采用了浮點數(shù)格式的一些特性,知道的同學請給我一個詳盡的解釋,在這里先感謝了.