时间复杂度
O(1)
参考文献
B站up黑夜点灯笼的视频
C++ 代码
class Solution {
public:
int NumberOf1(int n) {
int m_1 = 0x55555555;
int m_2 = 0x33333333;
int m_4 = 0x0f0f0f0f;
int m_8 = 0x00ff00ff;
int m_16 = 0x0000ffff;
int p_1 = (n & m_1) + ((n >> 1) & m_1);
int p_2 = (p_1 & m_2) + ((p_1 >> 2) & m_2);
int p_4 = (p_2 & m_4) + ((p_2 >> 4) & m_4);
int p_8 = (p_4 & m_8) + ((p_4 >> 8) & m_8);
int p_16 = (p_8 & m_16) + ((p_8 >> 16) & m_16);
return p_16;
}
};
缺陷
只适用 32位int 型变量