求乙個數的二進位制中有多少個1

2021-09-07 19:27:36 字數 563 閱讀 4942

思路:首先,大部分人最先想到的解題方法是 獲得這個數的每個二進位制位上的數,然後判斷與1按位與(0&1=0,1&1=1)的結果是否等於1,若等於1,則說明這個二進位制位上的數是1,則計數加1,最後返回計數的結果。

此外,還有另一種更簡單的解法:

(n=n&(n-1)): 讓這個數n與n-1按位與再賦給n,它的意義是,從低位到高位,n的二進位制位中第一次出現1的位置變成0(迴圈),直到n的二進位制位上的1全變成0(此時n=0),迴圈終止。

#include

#include

int function1

(int num)

//一般解法

return count;

}int function2

(int num)

//經典解法

return count;

}int main()

執行結果如下:

求二進位制數中有多少個1

演算法函式 1 int bit count one unsigned intn 2 下面我們來詳細解說如下 0x55555555的二進位制位01010101010101010101.n 0x55555555意思就是保留0,2,4,6,8.等偶數字上的1,而 n 1 0x55555555是代表保留奇數...

求乙個數二進位制中包含多少個1

public class test1 public static void name1 system.out.println count public static void name system.out.println count public static void name2 system....

365 二進位制中有多少個1

原題 您在真實的面試中是否遇到過這個題?是 給定5 101 返回2 給定1023 1111111111 返回10 標籤 二進位制位元位操作 思路 直觀的方法是將二進位制數的每一位依次右移再 1,結果為真計數器就加1,最後返回計數器。ac class solution return result 挑戰...