校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 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的個數算法示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 上蔡县| 淄博市| 淳化县| 福安市| 即墨市| 阳西县| 合水县| 上虞市| 灵川县| 吉木萨尔县| 上栗县| 宁阳县| 舒兰市| 涡阳县| 淳化县| 阿巴嘎旗| 新田县| 信丰县| 郧西县| 拜泉县| 余姚市| 长沙市| 蒲江县| 辰溪县| 二连浩特市| 崇左市| 常熟市| 西畴县| 南通市| 察哈| 唐山市| 福安市| 绥中县| 黔南| 丁青县| 西充县| 阳原县| 寿宁县| 潢川县| 宝坻区| 康乐县|