演算法很美 位運算 二進位制中 的個數

2021-10-05 19:00:12 字數 1106 閱讀 6779

上級目錄:演算法很美

請實現乙個函式,輸入乙個整數,輸出該數二進位制表示1的個數。例如:9的二進位制表示為1001,有2為是1

整數n有32位,假設當n與上(&)整數a=1第i(0<=i= 0;

//思路如下1:整數字有32位,因此只需要讓1左移32次,與n的二進位制形式中每一位數都進行與運算,每次與1進行與運算的位只有為1才能夠保持結果與1左移對應次數的結果相同,其他任何情況都是0

//這樣只需要判斷相等的次數即可

//思路如下1:整數n有32位,假設當n與上(&)整數a=1第i(0<=i//思路如下1:n不動,1左移

for(int i = 0; i < 32 ;i ++)

} system.out.println(

"思路1,1<<,數字1存在個數:"+count)

;整數n有32位,假設當n第i次右移的結果等於1的話,說明當前二進位制位上的數字是1。因此只需要計算n右移過程中結果相同的次數即可

//思路2如下:整數n有32位,假設當n第i次右移的結果等於1的話,說明當前二進位制位上的數字是1。因此只需要計算n右移過程中結果相同的次數即可

//思路2如下:1不動n左移

count = 0;

for(int i = 0; i < 32; i ++)

} system.out.println(

"思路2,n>>>,數字1存在個數:"+count)

;

存在這樣乙個規律,設整數為n,則要計算n的二進位制數中有多少個1,只需要計算當n!=0條件成立,迴圈執行n=n^(n-1)的次數

//思路3如下:存在這樣乙個規律,設整數為n,則要計算n的二進位制數中有多少個1,只需要計算當n!=0條件成立,執行n=n^(n-1)的次數

//使用當型別,滿足條件才執行

count=0;

while

(n!=0)

system.out.println(

"思路3,數字1存在個數:"+count)

;

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

題目描述 現在夯夯和朱朱餓了,他們想去吃點東西,他們發現店裡東西的 都是2的次方倍 20,21,22 現在夯夯和朱朱想把他們的的錢全都用掉。想知道他們最少能吃多少東西,最多能吃多少東西?輸入格式 多組樣例,每組樣例佔一行,每行乙個整數,代表他們擁有的總錢數。輸出格式 分別回答他們的問題,答案用空格隔...

二進位制位運算

與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...

二進位制位運算

一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...