基本的なアルゴリズム-ビット演算に関するトピック

ビットコンピューティングのトピック

Lowbit()アルゴリズムテンプレート/原則

  1. nのk番目の桁を見つけます。n >> k & 1
  2. nの最後の1ビットを返すことを求めています:lowbit(n) = n & (-n)
    アルゴリズム:ロービット演算は、数値の最後の1の後のすべてのビットを毎回インターセプトし、数値が0に減少するまで、毎回ロービットによって取得された数値を減算します。最後に、1の数の
    原則を取得します。コンピューターの負の数の形式は補数です。数xの元のコードが1 0001 0000であるとすると、-xの補数はすべてのビットの逆数に1を加えたものになります。つまり、0 11110000です。ロービットを実行して00001 0000を取得します。これは、必要なロービット演算です。

AcWing801。バイナリの1の数

#include <iostream>

using namespace std;
int lowbit(int x)//每次lowbit截取一个数字最后一个1后面的所有位,每次减去lowbit得到的数字
{
    
    
    return x&(-x);
}

int main()
{
    
    
    int x, n;
    cin >> n;
    while(n--)
    {
    
    
        cin >> x;
        int cont = 0;
        while(x) x -= lowbit(x), cont++;
        cout << cont << ' ';
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/moumoumouwang/article/details/109324960