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

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

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

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

問題

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

解決思路

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

實現(xiàn)代碼

//解法一
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){ // 處理負數(shù)
   $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";

運行結(jié)果:

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

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

相關(guān)文章

最新評論

牡丹江市| 虞城县| 承德市| 从化市| 晋中市| 鄂托克前旗| 河北区| 栾城县| 塔城市| 万全县| 额尔古纳市| 无为县| 琼中| 河北区| 扶风县| 宁陵县| 巴彦县| 嵩明县| 福安市| 平安县| 买车| 镇巴县| 安溪县| 西畴县| 广安市| 土默特左旗| 静宁县| 临邑县| 周宁县| 营山县| 乐平市| 石屏县| 杭锦旗| 阳山县| 信阳市| 革吉县| 朝阳县| 德清县| 洞口县| 肥乡县| 锡林浩特市|