本文主要是介绍二进制某一位的数值 二进制最右边的1 AcWing 801. 二进制中1的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<bits/stdc++.h>using namespace std;int lowbit(int x)
{return x&(-x);
}int main()
{int n;cin>>n;while(n--){int x;cin>>x;int ans=0;while(x){x-=lowbit(x);ans++;}cout<<ans<<" ";}cout<<endl;return 0;
}
位运算,很久之前写过这个题,是6
个月前了,自己其实没有什么好的理解
位运算
有两种常见的操作,第一种是
n > > k ∧ 1 n>>k\land1 n>>k∧1表示的是第k
位的数字是多少(二进制表示的时候,从最右边是第0
位开始算的第k
位)
第二种是 n ∧ ( − n ) n\land{(-n)} n∧(−n)
表示最后一位1
以及后面的一串0
比如说二进制数字101010100
上面公式返回的是最后一个1
和后面的0
,就是100
做减法计算1
的个数的话,按照上面的公式模拟样例就可以理解其正确性
还发现函数只有一行的话,也必须写花括号,不然会报错
这篇关于二进制某一位的数值 二进制最右边的1 AcWing 801. 二进制中1的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!