Write a function that takes an integer as input, and returns the number of bits that are equal to one in the binary representation of that number. You can guarantee that input is non-negative.
Example: The binary representation of 1234
is 10011010010
, so the function should return 5
in this case
var countBits = function(n) {
// set counter
let counter = 0;
while(true) {
let share = parseInt(n/2);
let reminder = n % 2;
n = share;
// add only if reminder is 1
if(reminder == 1) {
counter++;
}
if(n == 0) {
break;
}
}
return counter;
};
parseInt(string, radix)
주어진 문자열을 숫자로 주어진 진법에 따라 변환한다. radix를 항상 명시해주자.
parseInt("111",2); // 7
function countBits(n) {
for(c=0;n;n>>=1)c+=n&1
return c;
}
주어진 조건을 만족하는 동안에 n의 1의 자리가 1이면 c에 1을 더하고 0이면 0을 더한다. 처음 시행 이후에 n을 오른쪽으로 한자리씩 밀어서 다음자리를 또 비교한다.
countBits = n => n.toString(2).split('0').join('').length;
toString()
숫자 타입을 문자 타입으로 변경
split('0')
0을 기준으로 문자열을 쪼개서 배열로 저장한다.
join()
배열의 모든 요소를 연결해 하나의 문자열을 만든다.