最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php實現統(tǒng)計二進制中1的個數算法示例

 更新時間:2018年01月23日 15:19:33   作者:重口味AC  
這篇文章主要介紹了php實現統(tǒng)計二進制中1的個數算法,結合實例形式分析了php字符串遍歷、判斷、統(tǒng)計等相關操作技巧,需要的朋友可以參考下

本文實例講述了php實現統(tǒng)計二進制中1的個數算法。分享給大家供大家參考,具體如下:

問題

輸入一個十進制整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。

解決思路

這是個位運算的題目。
解法一:可以通過按位與操作,通過將每一位和1與操作來求出1的個數。
解法二(最優(yōu)解):一個巧妙的方法,一個不為0的二進制數,肯定至少有一位是1,當這個數減一的時候,它的最后一位1會變?yōu)?,后邊的所有0會變?yōu)?。比如10100,減一之后會變?yōu)?0011,然后用原數字10100和10011進行與操作之后,會得到10000,也就是通過這個操作,可以將一個1變?yōu)?,所以一個二進制數字能進行多少次這樣的操作,就有多少個1.

實現代碼

//解法一
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";

運行結果:

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結

希望本文所述對大家PHP程序設計有所幫助。

相關文章

最新評論

新津县| 固始县| 淮南市| 固安县| 洞口县| 鱼台县| 山阳县| 台中市| 施秉县| 望江县| 五华县| 桓台县| 兴和县| 亚东县| 福鼎市| 舟曲县| 广州市| 吴江市| 内江市| 乃东县| 合江县| 军事| 江阴市| 洛扎县| 顺义区| 抚宁县| 乐亭县| 长治市| 东台市| 当阳市| 宁阳县| 庆元县| 呼玛县| 延边| 灌南县| 隆化县| 汝城县| 昌平区| 上林县| 吐鲁番市| 兴安盟|