Я написал ниже код в C++ для поиска индексов заданных битов в числах.Получение неправильного вывода при поиске индексов заданных битов - C++
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main(int argc, char const *argv[])
{
for(ll i = 1; i < (1<<3); i++)
{
cout<<i<<" here ";
for(ll j = 0; j < 3; j++)
{
if(i&(1<<j) != 0)
cout<<j<<" ";
}
cout<<endl;
}
return 0;
}
выход, который я получаю (что неверно):
1 here 0 1 2
2 here
3 here 0 1 2
4 here
5 here 0 1 2
6 here
7 here 0 1 2
тогда, если мы возьмем i = 1
. Так как двоичное представление 1 равно 001
, поэтому при выполнении поразрядного &
с 010
i.e 2 оно должно указывать 0
. Поэтому для i = 1 следует распечатать только 0
, 1 here 0
.