不是2的幂次方都能分解

2的幂次方的判断,2的幂次方首位为1,后面都是0,2的幂次方-1,首位为0,后面都是1,两者按位与为0

(x&(x-1))==0,则x为2的幂次方

#include<bits/stdc++.h>

using namespace std;

int main()

{

    int n;

    cin>>n;

    int ans=0;

    int arr[n];

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

    {

        cin>>arr[i];

        int x=arr[i];

        if((x & (x-1))!=0)

        {

            ans++;

        }

    }

    cout<<ans<<endl;

}