PHP 演算法 二進位制中1的個數的PHP實現

2021-09-07 20:15:29 字數 755 閱讀 3933

二進位制中1的個數:

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

思路:1.右移位運算》 和 與運算&

2.先移位個然後再與1 &運算為1的就是1

3.這裡如果是負數就會出現死迴圈,負數右移後高位會一直補1

4.因此要實現一下無符號位移

無符號右移的實現思路

1.這個負數右移n位後的結果,然後把符號位後n位的1變為0

2.2147483647 這個數是0...31個1 ,最大的正整數右移n-1位的結果 進行&運算

un_right(a,n)

$c = 2147483647>>($n-1);

return

$c&($a>>$n

);numberof1(n)

count=0

while n!=0

if n&1==1

count++n=un_right(n,1)

return

count

<?php

//無符號位移

function un_right($a,$n)//

檢測整數二進位制中1的個數

function numberof1($n

)

$n=un_right($n,1);

}

return

$count;}

$r=numberof1(10);

var_dump($r);

二進位制 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...

演算法 二進位制中1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。看到這個題目,就應該想到,這樣的題目需要用位運算來解決,這才是正確的門,要是沒想到用位運算,那就是還沒入門。思路一 既然是位運算,那可不可以直接用1與輸入n進行 位運算,結果為1的話,個數加一,否則個數不變,之後n向右位移1。這樣做是...

演算法 二進位制中1的個數

請實現乙個函式,輸入乙個整數 以二進位制串形式 輸出該數二進位制表示中 1 的個數。例如,把 9表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...