Detailed explanation of the algorithm steps to implement statistics on the number of 1's in binary in PHP

php中世界最好的语言
Release: 2023-03-26 21:48:02
Original
1651 people have browsed it

This time I will bring you a detailed explanation of the algorithm steps to implement statistical counting of the number of 1's in a binary system in PHP. What are the precautions . The following is a practical case. One Get up and take a look.

Question

Input a decimal integer, and output the number of 1’s in the binary representation of the number. Negative numbers are expressed in two's complement.

Solution ideas

This is a bit operation question.
Solution 1: You can find the number of 1's by ANDing each bit with 1 through bitwise AND operation.
Solution 2 (optimal solution): A clever method. A binary number that is not 0 must have at least one bit that is 1. When this number is reduced by one, its last bit of 1 will become 0. All subsequent 0's will be changed to 1's. For example, 10100 will become 10011 after subtracting one. Then, after ANDing the original numbers 10100 and 10011, you will get 10000. That is, through this operation, you can change a 1 into a 0, so how many times can a binary number be like this? There are as many operations as there are 1.

Implementation code

//解法一
function NumberOf1($n)
{
 $count = 0;
  $flag = 1;
  while ($flag != 0) {
   if (($n & $flag) != 0) {
    $count++;
   }
   $flag = $flag << 1;
  }
  return $count;
}
Copy after login
// 解法二
function NumberOf1($n)
{
 $count = 0;
 if($n < 0){ // 处理负数
   $n = $n&0x7FFFFFFF;
   ++$count;
 }
 while($n != 0){
  $count++;
  $n = $n & ($n-1);
 }
 return $count;
}
Copy after login
//测试
$num=45;
echo $num."的二进制是".decbin($num)."<br/>";
echo $num."共有".NumberOf1($num)."个1";
Copy after login

Running result:

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

Detailed explanation of the steps to achieve the mysql connection pool effect in php

win10 localhost cannot be used after apache configures the virtual host How to deal with

PHP CURL and java http usage steps to parse

The above is the detailed content of Detailed explanation of the algorithm steps to implement statistics on the number of 1's in binary in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
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!