[알고리즘 기반] 비트 연산

1. 컴퓨터에서의 음수 표현

컴퓨터에서 양수와 음수는 모두 2의 보수로 표현됩니다.

2. n의 이진법에서 k번째 숫자를 찾는 방법

3. lowbit(x): x의 마지막 비트를 반환 1

4. 예: 이진수 1의 수

길이가 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 lowbit(int x)
{
    return x&(-x);
}

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int x;
        cin>>x;
        
        int res=0;
        while(x) x-=lowbit(x), res++;//每次减去x的最后一位1
        
        cout<<res<<' ';
    }
    
    return 0;
}

추천

출처blog.csdn.net/m0_67463447/article/details/128680798