This article mainly introduces the algorithm for realizing the number of 1 in statistical binary in PHP, and analyzes PHP string traversal, judgment, statistics and other related operation skills in the form of examples. Friends in need can refer to it
The example of this article describes the implementation of the algorithm of counting 1 in statistical binary in PHP. Share it with everyone for your reference, the details are as follows:
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 question about single digit arithmetic.
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; }
// 解法二 function NumberOf1($n) { $count = 0; if($n < 0){ // 处理负数 $n = $n&0x7FFFFFFF; ++$count; } while($n != 0){ $count++; $n = $n & ($n-1); } return $count; }
//测试 $num=45; echo $num."的二进制是".decbin($num)."<br/>"; echo $num."共有".NumberOf1($num)."个1";
Related explanations of WeChat remote control server for PHP development
How to operate redis with CI framework (CodeIgniter) Detailed explanation
#php Detailed explanation of using the imagecopymerge() function to create a translucent watermark
The above is the detailed content of Example of php implementing the algorithm of counting the number of 1's in binary. For more information, please follow other related articles on the PHP Chinese website!