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


先講解幾個位運算的知識

1、二進制中第k位是幾?

 

 

 

2、lowbit(x)

 

 3、lowbit實現方法(注意:~x+1就是-x)

下面我們進入正題:

給定一個長度為 n 的數列,請你求出數列中每個數的二進制表示中 1的個數。
輸入格式
第一行包含整數 n。
第二行包含 n個整數,表示整個數列。
輸出格式
共一行,包含 n個整數,其中的第 i 個數表示數列中的第 i 個數的二進制表示中 1的個數。
數據范圍

1≤n≤100000,
0≤數列中元素的值≤10^9

輸入樣例:

5
1 2 3 4 5

輸出樣例:

1 1 2 1 2

 

 

#include <iostream>

using namespace std;

int main()
{
    int n;
    scanf("%d", &n);
    while (n -- )
    {
        int x, s = 0;
        scanf("%d", &x);

        for (int i = x; i; i -= i & -i) s ++ ;

        printf("%d ", s);
    }

    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM