Home  >  Article  >  Web Front-end  >  JavaScript Fun Question: Statistical Binary

JavaScript Fun Question: Statistical Binary

黄舟
黄舟Original
2017-02-13 16:23:451387browse

Those who work on the front end must have few opportunities to come into contact with binary. Aren't those bit operations something that the bottom layer should consider?

I saw a question yesterday. It is related to binary, but it doesn’t matter whether bit operations are used or not. It can be easily solved with the help of the language features of JS.

The description is as follows:

Write a function that receives a positive decimal integer as a parameter, represents it in binary, and returns the number whose digits are equal to 1.

Let’s take an example:

1234 expressed in binary is 1001101 0010, there are 5 1 in it, so 5 is returned.

After reading this description, the first thing that came to my mind was that the teacher used to teach me how to convert from decimal to binary (it will be easier to use the book ^_^).

Fortunately, I have a good memory, and I quickly thought of it. For this positive integer, first take the remainder of 2, then divide it by 2, and then calculate the result Take the remainder of 2 and divide by 2...until the result is 0.

Then, in the above process, use a variable to record the number of times the remainder is 1, and finally return.

So we came up with the following approach:


var countBits = function(n) {
    var count = 0;
    while(n > 0){
        var res = n % 2;
        if(res == 1){
            count++;
        }
        n = parseInt(n / 2);
    }
    return count;
};

This code and idea are quite satisfactory, but it does not make full use of the language features of JS.

In JS, isn’t there a ready-made API for converting decimal to binary?

number.toString(2), doesn’t this get a binary string?

The results are all out, then search for the number of 1 one by one, and then return.

Hmm, the above two methods are good, but they reach the same goal in different ways. The most efficient method is bit operation.

Finally, let’s take a look at a bit-operation solution written by a foreign expert!


function countBits(n) {
  for(c=0;n;n>>=1)c+=n&1
  return c;
}

Tsk, tsk, the rhythm that makes your eyes blind.

The above is an interesting JavaScript question: statistical binary content. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn