Bit Counting


Description:


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

My Solution:

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)
    与えられた文字列を数値に変換し、与えられたアレイ法に従って変換します.必ず基数を明記しなければならない.
  • 文字列タイプの実数値は整数値のみを返します.
  • parseInt("111",2); // 7

    Best Solutions:


  • function countBits(n) {
      for(c=0;n;n>>=1)c+=n&1
      return c;
    }
    与えられた条件を満たす場合、nの1のビットは1であり、cは1であり、0は0である.1回目の実施後、nを1つ右に押して、次の位置を比較する.

  • countBits = n => n.toString(2).split('0').join('').length;

  • toString()
    数値タイプを文字タイプに変更

  • split('0')
    0を基準として、文字列を分割して配列として格納します.

  • join()
    配列内のすべての要素を接続して文字列を形成します.