Algorithm/비트마스킹
리트코드 1비트의 갯수 c++ //비트마스킹, 최하위 1지우는법
Mini_96
2024. 5. 18. 20:14
https://leetcode.com/problems/number-of-1-bits/description/
1. 최하위 1지우는법
n=n&(n-1) 하면 된다.
ex) 11 & 10 == 10으로 최하위 1이 지워진다.
2. 1갯수 세는법
i) n을 2진수로 바꾸는 로직을 이용하면 된다.
ii) 최하위 1을 계속 지우고 cnt++ 하면된다. n이 1이상인동안
3. 전체코드
i)
class Solution {
public:
int hammingWeight(int n) {
//cout<<(1<<31);
int ret=0;
while(n){
ret+=(n%2);
n/=2;
}
return ret;
}
};
ii)
class Solution {
public:
int hammingWeight(int n) {
int cnt=0;
while(n){
n=n&(n-1);
cnt++;
}
return cnt;
}
};