获得不大于数的2整数幂的数。例如, 不大于6的2整数幂的数是4.
1 #include <bitset> 2 3 using namespace std; 4 5 /* 6 * 返回不大于num的最大数的2进制数幂次。 7 */ 8 int GetMaxPos(int num) 9 { 10 int flag = num & (num - 1); 11 12 if (flag == 0) 13 flag = num; 14 15 int pos = 0; 16 while (flag >>= 1) { 17 pos++; 18 } 19 20 return pos; 21 } 22 23 int main() 24 { 25 int num = 6; 26 27 cout << GetMaxPos(num) << endl; 28 29 return 0; 30 }