国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

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

2024-05-04 21:50:24
字體:
供稿:網(wǎng)友

php怎么實現(xiàn)統(tǒng)計二進(jìn)制中1的個數(shù)算法?本文為大家介紹了php實現(xiàn)統(tǒng)計二進(jìn)制中1的個數(shù)算法的實例代碼,快來看看吧。

問題:

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

解決思路:

這是個位運算的題目。

解法一:可以通過按位與操作,通過將每一位和1與操作來求出1的個數(shù)。

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

實現(xiàn)代碼:

  1. //解法一 
  2. function NumberOf1($n
  3.  $count = 0; 
  4.   $flag = 1; 
  5.   while ($flag != 0) { 
  6.    if (($n & $flag) != 0) { 
  7.     $count++; 
  8.    } 
  9.    $flag = $flag << 1; 
  10.   } 
  11.   return $count
  12.  
  13. // 解法二 
  14. function NumberOf1($n
  15.  $count = 0; 
  16.  if($n < 0){ // 處理負(fù)數(shù) 
  17.    $n = $n&0x7FFFFFFF; 
  18.    ++$count
  19.  } 
  20.  while($n != 0){ 
  21.   $count++; 
  22.   $n = $n & ($n-1); 
  23.  } 
  24.  return $count
  25.  
  26. //測試 
  27. $num=45; 
  28. echo $num."的二進(jìn)制是".decbin($num)."<br/>"
  29. echo $num."共有".NumberOf1($num)."個1"

運行結(jié)果:

45的二進(jìn)制是101101

45共有4個1

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌兰县| 台州市| 都兰县| 漳平市| 安康市| 永州市| 东城区| 屏东县| 温宿县| 宣恩县| 宜春市| 丰镇市| 紫阳县| 永济市| 广灵县| 安达市| 平果县| 元朗区| 孟村| 临西县| 惠州市| 西昌市| 岳普湖县| 濉溪县| 扎赉特旗| 孟州市| 芮城县| 永宁县| 南平市| 樟树市| 班玛县| 洪湖市| 山阴县| 广饶县| 鄯善县| 平顺县| 莎车县| 比如县| 太白县| 新竹县| 青河县|