百度出来一个
int highestBit(int num) { if (num == 0) return 0; return sizeof(num) * CHAR_BIT - 1 - __builtin_clz(num); }
但是实测耗时貌似跟我直接枚举位没啥区别?
上面的 sizeof 和 __builtin_clz 都是 O(1)O(1)O(1) 而不是位数的吗?