婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php實現統計二進制中1的個數算法示例

php實現統計二進制中1的個數算法示例

熱門標簽:離石地圖標注 長沙crm外呼系統業務 400電話辦理福州市 深圳外呼系統收費 江蘇外呼電銷機器人報價 電話機器人危險嗎 南寧高頻外呼回撥系統哪家好 專業電話機器人批發商 400電話申請方法收費

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

問題

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

解決思路

這是個位運算的題目。
解法一:可以通過按位與操作,通過將每一位和1與操作來求出1的個數。
解法二(最優解):一個巧妙的方法,一個不為0的二進制數,肯定至少有一位是1,當這個數減一的時候,它的最后一位1會變為0,后邊的所有0會變為1。比如10100,減一之后會變為10011,然后用原數字10100和10011進行與操作之后,會得到10000,也就是通過這個操作,可以將一個1變為0,所以一個二進制數字能進行多少次這樣的操作,就有多少個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 = $n0x7FFFFFFF;
   ++$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程序設計有所幫助。

您可能感興趣的文章:
  • PHP統計二維數組元素個數的方法
  • php統計數組元素個數的方法
  • 使用php統計字符串中中英文字符的個數
  • PHP統計數值數組中出現頻率最多的10個數字的方法
  • php簡單統計中文個數的方法
  • PHP實現統計一個數字在排序數組中出現次數的方法
  • php編寫的抽獎程序中獎概率算法
  • php中最簡單的字符串匹配算法
  • PHP經典算法集錦【經典收藏】
  • php經典算法集錦

標簽:濱州 南京 南昌 白酒營銷 株洲 太原 興安盟 曲靖

巨人網絡通訊聲明:本文標題《php實現統計二進制中1的個數算法示例》,本文關鍵詞  php,實現,統計,二進制,中,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php實現統計二進制中1的個數算法示例》相關的同類信息!
  • 本頁收集關于php實現統計二進制中1的個數算法示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 宝丰县| 张北县| 绥滨县| 永仁县| 灵宝市| 郴州市| 齐河县| 大丰市| 宁远县| 嘉荫县| 凤庆县| 汝南县| 张家川| 遂川县| 大港区| 美姑县| 松江区| 洛扎县| 盐山县| 河间市| 静乐县| 襄垣县| 札达县| 思南县| 景洪市| 上犹县| 文登市| 阜阳市| 南涧| 化隆| 通辽市| 安溪县| 合阳县| 松溪县| 醴陵市| 武安市| 曲周县| 周至县| 吉首市| 黔西县| 济源市|