Home > Web Front-end > JS Tutorial > body text

JavaScript Fun Question: Statistical Binary

黄舟
Release: 2017-02-13 16:23:45
Original
1372 people have browsed it

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;
};
Copy after login

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;
}
Copy after login

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)!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!